2016-12-01 3 views
0

Inhalt "#menuHover; #menuHoverColor;"müssen die genaue Übereinstimmung nur unter Verwendung von preg_replace ersetzen

Ich muss die erste #menuHover durch #fff ersetzen.

Wenn ich str_replace benutze es ersetzen alle "menuHover" Zeichenfolge im Inhalt, aber ich muss nur die erste ersetzen.

+0

Hmm .. haben Sie versucht str_replace so? $ newData = str_replace ("menuHover;", "ffff;", $ data); –

+0

ja, es ersetzt die zweite auch – Karthik

+0

Fügen Sie einfach das Semikolon :) –

Antwort

1

preg_replace. Verwenden 4. Parameter (Limit = 1)

Zum Beispiel:

$string = '#menuHover #menuHoverHover'; 

$replacedString = preg_replace('/menuHover/', 'fff', $string, 1); 

print_r ($replacedString); 

Wenn Sie genau ersetzen wollen "menuHover" string unabhängig von seiner Position können Sie nächsten Code verwenden:

$replacedString = preg_replace('/#menuHover(?!\S)/', '#fff', $string, 1); 

Another Verbesserung bedenken Semikolon:

$replacedString = preg_replace('/#menuHover([;]?)(?!\S)/', '#fff$1', $string, 1); 
+0

können Sie den Preg_replace-Code mit reg_exp für mein Problem teilen – Karthik

+1

[PHP-Sandbox-Code] (http://sandbox.onlinephpfunctions.com/code/534be43c548278701abc6763ecd01ebd99919aeb) –

0

Ich denke, die str_replace wird ausreichen, nur hinzufügen das Semikolon:

$string = "#menuHover; #menuHoverColor;"; 
$newString = str_replace("menuHover;", "fff;", $string); 
echo $newString; 

oder preg_replace mit

$string = "#menuHover; #menuHoverColor;"; 
$newString = preg_replace("/menuHover/", "fff", $string, 1); 
echo $newString; 
1

Verwenden Wortgrenzen:

$str = "#menuHover; #menuHoverColor;"; 
$str = preg_replace("/\bmenuHover\b/", "fff", $str); 
echo $str,"\n"; 
Verwandte Themen