替换PHP中的精确字符串

替换PHP中的精确字符串,php,preg-replace,str-replace,Php,Preg Replace,Str Replace,我有一个字符串,看起来像: $String = "Size,Please Select,L Kids,XL Kids,S,M,L,XL" 我想将“、XL”替换为“、XL(缺货)”,但我不希望它也替换“XL儿童” 所以我需要一个结果,比如: $String_replaced ="Size,Please Select,L Kids,XL Kids,S,M,L,XL (Out Of Stock)" 我已经尝试使用字符串替换,但这将不起作用,我知道我将不得不使用preg替换,但我不确定如何做到这一点

我有一个字符串,看起来像:

$String = "Size,Please Select,L Kids,XL Kids,S,M,L,XL"
我想将“、XL”替换为“、XL(缺货)”,但我不希望它也替换“XL儿童”

所以我需要一个结果,比如:

$String_replaced ="Size,Please Select,L Kids,XL Kids,S,M,L,XL (Out Of Stock)"
我已经尝试使用字符串替换,但这将不起作用,我知道我将不得不使用preg替换,但我不确定如何做到这一点

有人能帮忙吗?

一个解决方案可能是:

preg_replace("/,XL(\,|$)/", ",XL (Out of Stock),", $String);

这种基于查找的正则表达式应该可以工作:

$repl = preg_replace('/(?<=^|,)\bXL\b(?=,|$)/', 'XL (Out of Stock)', $String);

尽管preg_replace是完全可以接受的,但如果这只是一个“一次性”的东西,一个更快的替代方法是仍然使用string replace:

$string = "Size,Please Select,L Kids,XL Kids,S,M,L,XL";
$newString = str_replace("L,XL","L,XL (Out Of Stock)",$string);
echo $newString;

这将查找紧跟在L前面的所有“、XL”值。

我将使用负前瞻:

$String = "Size,Please Select,L Kids,XL Kids,S,M,L,XL";
$String_replaced  = preg_replace('/\bXL\b(?! Kids)/', 'XL (Out of Stock)', $String);
echo $String_replaced ,"\n";
输出:

Size,Please Select,L Kids,XL Kids,S,M,L,XL (Out of Stock)

我刚刚测试了代码,它似乎解决了我的问题!非常感谢你!谢谢你的回复。谢谢你的回复。谢谢你的回复。
Size,Please Select,L Kids,XL Kids,S,M,L,XL (Out of Stock)