Hallo Gemeinde,
vorab zur Info: ich bin kein Regex Profi! Bitte die Baseballschläger im Schrank lassen, wenn der "Ausdruck" bzw. Lösungsansatz Augenkrebs bei einigen Foren-Lesern/in verursacht.
1.) Mit folgendem Ausdruck: "/o(.*(]|));/msU" möchte ich alle Parts im $string matchen die mit 'o(' beginnen und bei erstem vorkommen auf '];' oder ');' enden. Allerdings werden auch Bereiche gematched die nicht "wirklich" zum Muster passen. Siehe unten Ergebnis Position 1 und 2!
$string = 'o("Hello World")->get("boo")["foo"]
->reserve()["chuck"]
->final("end");
if(o("Hello World")->pregMatch("/Hello/")[2]) {
echo "chuck norris";
o($array)[0][1][2]->test("chuck norris")["xxx"][xxx]
->shuffle()["xxx"];
if(o("hier")->isArray()) {
echo "is Array";
} else {
echo "not Array";
}
}
o($foo)[0][2]["foo"]
->sttoupper()
->reserve();
if($foo === "serkan"){
o("tesf")->test("ironman")["d"]->reserve();
}
o($test)->test($jo)[33]
->reserve()[333];
o("tesf")->test($jo)["d"]->reserve()[4444];
o(navigator)->userAgent()->pregMatch("/iphone/")[0];'
Ergebnis:
array (size=2)
0 =>
array (size=7)
0 => string 'o("Hello World")->get("boo")["foo"]
->reserve()["chuck"]
->final("end");' (length=128)
1 => string 'o("Hello World")->pregMatch("/Hello/")[2]) {
echo "chuck norris";
o($array)[0][1][2]->test("chuck norris")["xxx"][xxx]
->shuffle()[xxx];' (length=217)
2 => string 'o("hier")->isArray()) {
echo "is Array";
} else {
echo "not Array";
}
}
o($foo)[0][2]["foo"]
->sttoupper()
->reserve();' (length=266)
3 => string 'o("tesf")->test("ironman")["d"]->reserve();' (length=43)
4 => string 'o($test)->test($jo)[33]
->reserve()[333];' (length=68)
5 => string 'o("tesf")->test($jo)["d"]->reserve()[4444];' (length=49)
6 => string 'o(navigator)->userAgent()->pregMatch("/iphone/")[0];' (length=52)
2.) Dann gibt es noch folgende Fälle. Da weis ich nicht wirklich wie ich an die Sache ran gehen soll. z.B. der Ausdruck(siehe oben) der innerhalb if()/elsif()/for()/foreach()/while()/usw vorkommen kann.
Vielleicht ist der Punkt 1 und 2 anders zu löschen. Also ohne Reguläre Ausdrücke! Ich bitte um konstruktive Vorschläge
if(o("hier")->isArray()) {
echo "is Array";
} else {
echo "not Array";
}