PHP bir dizeden fonksiyonları ayrıştırmak için Düzenli İfadeler Kullanma

3 Cevap php

PHP Düzenli ifadeler kullanarak fonksiyon isimleri ve onların argümanlarını dışarı atmak için mantıklı bir yolu var mı? Ben daha kolay biçimlendirme için her satırda, her işlevi olması mümkün duyuyorum ki şu anda ben bunu satır bölme hattı var.

Yani:

doSomeFunction(arg, moreargs, stuff);
breakSomething();
ini_set(include_path, /home/htdocs/);

olur

array([0] => 'doSomeFunction(arg, moreargs, stuff);', [1] => 'breakSomething();' and so on...

Ben yaşıyorum Asıl sorun gibi sözdizimi için regex kullanarak işlev adını oluyor:

$functionfromregex($args);

Fonksiyonları PHP'nin "Değişken Fonksiyon Adı" yeteneğini kullanarak inşa, bu yüzden mümkün olmaktadır. PHP olarak ayrıştırmak için gereken yol togather tutkal onları hiçbir makul bir yol olduğundan argümanlar diziler olarak alınır. Gerçek olumsuz Ben, herhangi bir yardım büyük takdir edilecektir Düzenli ifadeler ile çok aşina değilim ve başka herhangi bir bilgiye ihtiyacınız varsa sormaya çekinmeyin olmasıdır.

3 Cevap

PHP ayrıştırmak istiyorsanız, token_get_all to get the tokens verilen kodu kullanabilirsiniz.

Ayrıca Reflection sınıfa bakmak olabilir.

Yani php, ben java benzer bir şey yapıyorum emin değilim ve aşağıdaki kod benzer bir şekilde şeritler:

[^ (&& [^) && [^]]] Foo uygulanan (param1, param2, param3) dönecektir ["foo", "param1", "param2", "param3"].

Ben yaşıyorum sorun bu irade hepsini dize '(' ve ')', yani param aslında bir değişken veya bir yöntem olup olmadığını söylemek için hiçbir yolu yoktur.