字符串替换 php 中的确切单词
string replace exact word in php
php
$aaa="";
echo $nn="ab bc cd cde ab aa";
echo "<br>";
echo $n=preg_replace('/cd|ab/', '$aaa', $nn);
echo "<br>";
echo $no=preg_replace('/[a-z]/', '$bbb', $n);
echo "<br><br>";
我期待的输出是“$aaa $bbb $aaa $bbb $bbb $bbb”。也就是说,当模式 'cd' 或 'ab' 单独匹配时,它应该更改为 ' $aaa' 和那些与 '$bbb' 不匹配的。
$aaa="";
echo $nn="ab bc cd cde ab aa";
echo "<br>";
echo $n=preg_replace('/\b(cd|ab)\b/', '$aaa', $nn);
echo "<br>";
echo $no=preg_replace('/((?<= )[a-z]+)\b/', '$bbb', $n);
echo "<br><br>";
第一个替换匹配在:词边界内的 cd 或 ab(即字符串的 spaces 或 start/end)
第二个替换匹配 (a-z) 1 次或多次,前面是 space(因为 $ 也是单词边界)。唯一的缺点是如果 cde 是字符串的开头,这将不匹配 cde。
php
$aaa="";
echo $nn="ab bc cd cde ab aa";
echo "<br>";
echo $n=preg_replace('/cd|ab/', '$aaa', $nn);
echo "<br>";
echo $no=preg_replace('/[a-z]/', '$bbb', $n);
echo "<br><br>";
我期待的输出是“$aaa $bbb $aaa $bbb $bbb $bbb”。也就是说,当模式 'cd' 或 'ab' 单独匹配时,它应该更改为 ' $aaa' 和那些与 '$bbb' 不匹配的。
$aaa="";
echo $nn="ab bc cd cde ab aa";
echo "<br>";
echo $n=preg_replace('/\b(cd|ab)\b/', '$aaa', $nn);
echo "<br>";
echo $no=preg_replace('/((?<= )[a-z]+)\b/', '$bbb', $n);
echo "<br><br>";
第一个替换匹配在:词边界内的 cd 或 ab(即字符串的 spaces 或 start/end)
第二个替换匹配 (a-z) 1 次或多次,前面是 space(因为 $ 也是单词边界)。唯一的缺点是如果 cde 是字符串的开头,这将不匹配 cde。