我尝试使用正则表达式在php中执行以下操作。
示例字符串:"懒狗吠叫。懒惰的疯狗。"
我想将其更改为:
"the <tag>lazy</tag> dog barked. <tag>Lazy</tag> crazy dog."
所以我想围绕Lazy的每个实例,不管用什么情况
我知道你可以使用像&#34; / \ blazy \ b / i&#34;这样的正则表达式。选择懒惰。
对于我的生活,我们无法弄清楚如何使用preg_replace来代替单词而不管标签所包含的相同单词的大小写。
对此表示感谢。
答案 0 :(得分:0)
您可以在此实例中使用preg_replace_callback http://php.net/manual/en/function.preg-replace-callback.php。
$string = "the lazy dog barked. Lazy crazy dog.";
$result = preg_replace_callback('/lazy/i', function ($item) {
return '<tag>' . $item[0] . '</tag>';
}, $string);
echo $result;
答案 1 :(得分:0)
带分组的preg_replace
应该能够做到这一点:
$string = "the lazy dog barked. Lazy crazy dog.";
echo preg_replace('/\b(lazy)\b/i', '<tag>$1</tag>', $string);
输出:
the <tag>lazy</tag> dog barked. <tag>Lazy</tag> crazy dog.
如果您想要替换多个术语,请在每个术语之间使用或(|
)。
例如:
echo preg_replace('/\b(lazy|tired)\b/i', '<tag>$1</tag>', $string);
这会将lazy
和tired
放在tag
个元素中。
Regex101演示:https://regex101.com/r/hT6xR5/1
PHP演示:https://eval.in/512715