2016-12-01 103 views
0

内容“#menuHover; #menuHoverColor;”需要替换完全匹配只能使用preg_replace

我需要#fff更换第一#menuHover

当我使用str_replace它替换的内容全部“menuHover”字符串,但我需要更换只有第一个。

+0

嗯..你试过str_replace函数也是这样吗? $ newData = str_replace(“menuHover;”,“ffff;”,$ data); –

+0

是的,它取代了第二个也 – Karthik

+0

只需添加分号:) –

回答

1

preg_replace。使用第4个参数(上限= 1)

例如:

$string = '#menuHover #menuHoverHover'; 

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

print_r ($replacedString); 

如果您想更换正是 “menuHover” 字符串,无论它的位置,您可以使用下面的代码:

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

另一个改进考虑分号:

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

您可以与reg_exp preg_replace函数代码为我的概率 – Karthik

+1

[PHP代码的沙盒(http://sandbox.onlinephpfunctions.com/code/534be43c548278701abc6763ecd01ebd99919aeb) –

0

我认为str_replace就足够了,只需添加分号:

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

或使用的preg_replace

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

使用单词边界:

$str = "#menuHover; #menuHoverColor;"; 
$str = preg_replace("/\bmenuHover\b/", "fff", $str); 
echo $str,"\n"; 
相关问题