替换以#开头的占位符,然后替换整个单词

2022-03-22 00:00:00 regex php preg-replace

我需要替换文本中以散列标记(#)开头的单词。 嗯,我知道怎样才能把整个单词都替换掉。

preg_replace("/".$variable."/", $value, $text);

因为该修饰符只接受单词字符,所以不会替换包含散列标记的单词。


我有此html,其中包含#companyName类型的变量,我将其替换为值。


解决方案

匹配字母数字字符(速记w)和非字母数字字符(W),将下划线视为字母数字。这意味着,正如您所看到的,它不会在#之前匹配(除非前面有一个alnum字符)。

我建议您仅在查询词以alnum字符开头和结尾时才用括起来。

所以,可能是这样的(虽然我不知道任何PHP,所以这在语法上可能是完全错误的):

if (preg_match('/^w/', $variable))
    $variable = ''.$variable;
if (preg_match('/w$/', $variable))
    $variable = $variable.'';
preg_replace('/'.$variable.'/', $value, $text);

相关文章