moin moin
Das heißt, dass diese Aufrufe nicht gefunden werden sollen, wenn sie als Funktionsparameter oder Ausdrucksbestandteil (z.B. in einer Bedingung vor einem or/and) notiert kein ; hintendran haben - oder die auch?
Doch, diese sollen auch gefunden werden! Erst einmal wollte ich alle Bereiche matchen(da habe ich immer noch keine Lösung :( ) die "nicht" innerhalb einer Funktion aufgerufen werden bzw. ein Teil eines Ausdrucks sind und dann im zweiten Schritt mit der Token-Geschichte alle Bereiche lokalisieren die ein Teil einer Funktion/Bedingung/while/for usw sind!
Hier meine ersten Gehversuche, was nicht wirklich funktioniert! Was mache ich falsch?
$source = '<?
# use oopRuntime as file;
echo o(["test1", ["test2", "test3"]])[1]->shuffle()[0]->ucfirst();
class Foo {
public $tmp = null;
public function __construct($tmp) {
$this->tmp = $tmp;
}
public function init(){
$res = o($this->tmp)->explode('|')[1]->strtolower()->pregMatch("/Was/")[0]->strtolower();
if(o("Hallo")->pregMatch("Ha")){
echo "hallo";
}
}
}
$o = new Foo("Hallo|Was|Geht|Ab");
echo $o->init();
?>';
$tokens = \token_get_all($source);
foreach ($tokens as $token) {
var_dump($token);
if (is_string($token)) {
var_dump($token);
} else {
// Token Array
list($id, $text) = $token;
switch ($id) {
case T_IF:
var_dump($token); #passiert nichts !
break;
default:
#var_dump($token);
break;
}
}
}
Zum Löschen nimm rm oder del ... Ich denke, du kommst nervenschonender ans Ziel, wenn du die Token-Geschichte nimmst. Dabei wertest du nicht nach Mustern aus, die sonstwo vorkommen können und damit unerünscht sind, sondern findest anhand der Bedeutung die dich interessierenden Teile.
Jep, das gefällt mir :)
Gruß
Sipatshi