2016-07-15 17 views
1

im Suchen eines paragraph (string) für ein bestimmtes Wort ersetzen. und ich möchte dieses Wort durch ein anderes Wort ersetzen, aber ich möchte beim zweiten Vorkommen meines Fundes ersetzen. hier ist das, was ich versuchte,keine Lösung für mich. Wie kann ich das zweite Vorkommen eines Funds in PHP

$string = 'hello my name is hello'; 
$output = str_replace('hello', 'Gary', $string); 
// desired output 
//hello my name is Gary 

Es ist sehr einfach, aber ich kann es richtig machen. Bitte entblößen meine Zeichenfolge im Auge ist sehr lang und haben alle Arten von Zeichen in ihm

+0

möglich Duplikat [Ich möchte das zweite Auftreten der ersetzen Nummer in der Zeichenfolge] (http://stackoverflow.com/q/36417838) – mario

+0

Ich habe diesen Link überprüft. hilft mir immernoch nicht mein Problem zu lösen – Spapanka

Antwort

0

Mit dieser regex: /^.*?hello\b.*?\Khello/:

  • ^ assert Position am Anfang des Strings
  • .*? jedes Zeichen (mit Ausnahme newline)
  • \b assert Position an einer Wortgrenze (^ \ w | \ w $ | \ W \ w | \ w \ W)
  • \K setzt der Ausgangspunkt des gemeldeten Spiels. Alle zuvor verbrauchten Zeichen werden nicht mehr in dem letzten Spiel

prüfen diese Demo: https://regex101.com/r/lW2kK1/2

, die gibt Ihnen:

$re = "/^.*?hello\\b.*?\\Khello/"; 
$str = "hello my name is hello"; 
$subst = "Gary"; 

$result = preg_replace($re, $subst, $str);