2017-12-10 4 views
-1

ich eine große Zeichenfolge BeispielWie eine erwartete falsche Zeichenfolge in einem String Linie erkennen

newboay1fineboy8badboiy12 boy4andothersfollows ...

mein Problem ist, wie ich aus jedem der Zeichenfolge einen falschen Jungen erkenne Line-Ausgang Beispiel meine erwartete Ausgabe sollte wie: boay1 boiy12 dies mein versucht Code:

$string = "newboay1fineboy8badboiy12 boy4andothersfollows..."; 
$string = preg_match_all("/bo\d+/", $string, $results); 
foreach($results[0] as $val){ 
    if($val !== boy) { 
     echo $val; 
    } 

aber ich bekomme keine Ausgabe im Gegenzug. Vielen Dank für Ihre Zeit und Auswirkungen in meinem soluction

+0

_aber ich keine Ausgabe im Gegenzug_. Die Ausgabe ist in diesem Fall ein Syntaxfehler. – panther

+0

Ich sagte, aber ich bekomme keine Ausgabe in Renditen Bitte sehen Sie meine neue ediction –

+0

Ich bin mir nicht sicher, Ihre Frage vollständig zu verstehen. Was ist genau ein * falscher Junge *? Wie viele falsche/fehlende Buchstaben sind erlaubt und wo? Nur noch ein Buchstabe vor dem 'y'? –

Antwort

0

Sie können Sie Code wie folgt festzusetzen:

$string = "newboay1fineboy8badboiy12 boy4andothersfollows..."; 
$string = preg_match_all("/(bo\pL+)\d+/", $string, $results, PREG_SET_ORDER, 0); 
foreach($results as $val){ 
    if($val[1] !== "boy") { 
     echo $val[0] . "\n"; 
    } 
} 

die PHP demo See.

Der Punkt ist, bo, dann alle 1 + Buchstaben und erfassen diesen Teil, und dann passen Sie einfach 1 + Ziffern. Siehe die regex (demo):

'~(bo\pL+)\d+~' 

Einzelheiten

  • (bo\pL+) - Gruppe 1: bo und 1+ Buchstaben
  • \d+ - 1+ Ziffern.

Im Innern der foreach enthält $val[1] den Wert in Gruppe 1 eingefangen, und wenn es nicht gleich boy ist, kann man das ganze Spiel $val[0] in Ihrer if Aussage Zugriff erhalten.

+0

Vielen Dank, aber wie bekomme ich die korrekte erwartete Zeichenfolge auch Beispiel richtig boy8 boy4 falsch erwartet Zeichenfolge boay1 boiy12 versuchen mit $ string = "newboay1fineboy8badboiy12 boy4andothersfollow."; $ string = preg_match_all ("/ (bo \ pL +) \ d + /", $ Zeichenfolge, $ Ergebnisse, PREG_SET_ORDER, 0); foreach ($ Ergebnisse als $ val) { if ($ val [1]! == "Junge") { echo "$ val [0] incorrect"; } echo "implode ($ val) korrekt"; } , aber es Ausgabe sowohl korrekte und falsche erwartete Zeichenfolge –

+0

@ KingsleyPlaza: Siehe https://ideone.com/gNGAqX –

Verwandte Themen