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

标签 php regex preg-replace

我需要替换文本中以井号 (#) 开头的单词。 好吧,我知道如何替换整个单词。

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/

相关文章:

php - Woocommerce - 更改默认值(value)税类

php - Laravel 8 中未定义操作 Controller@store 的问题

php - Regex PHP - 自动检测 YouTube、图像和 "regular"链接

php - preg_replace 以突出显示格式化的电话号码

php - 转义正则表达式换行符

php - 使用php获取字符串的一部分

PHP MYSQL 存储密码以供 PHP 调用

javascript - 按列排序 div 并防止垂直自由空间

java - 棘手的特殊单引号

java - 正则表达式:匹配字符串中两个标签之间的字符串