需要仅使用preg_replace替换完全匹配

时间:2016-12-01 06:14:43

标签: php regex preg-replace

内容“#menuHover; #menuHoverColor;”

我需要将第一个#menuHover替换为#fff

当我使用str_replace时,它会替换内容中的所有“menuHover”字符串,但我只需要替换第一个字符串。

3 个答案:

答案 0 :(得分:1)

preg_replace。使用第4个参数(limit = 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);

答案 1 :(得分:1)

使用字边界:

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

答案 2 :(得分: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;