Sipatshi: Regex

Beitrag lesen

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";  
        }