我需要替换文本中以井号 (#) 开头的单词。 好吧,我知道如何替换整个单词。
preg_replace("/\b".$variable."\b/", $value, $text);
因为\b 修饰符只接受单词字符,所以不会替换包含井号的单词。
我有这个 html,其中包含 #companyName 类型的变量,我将其替换为一个值。
最佳答案
\b
匹配字母数字字符(简写 \w
)和非字母数字字符(\W
),将下划线计为字母数字。如您所见,这意味着它不会在 #
之前匹配(除非它前面有一个 alnum 字符)。
我建议你只用 \b
包围你的查询词,如果它以一个 alnum 字符开始和结束。
所以,也许是这样的(虽然我不知道任何 PHP,所以这可能在语法上完全错误):
if (preg_match('/^\w/', $variable))
$variable = '\b'.$variable;
if (preg_match('/\w$/', $variable))
$variable = $variable.'\b';
preg_replace('/'.$variable.'/', $value, $text);
关于php - 替换以 # 开头的占位符,然后是整个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4275682/