gpt4 book ai didi

php - 替换 PHP 中包含 $ 字符的单词

转载 作者:行者123 更新时间:2023-12-04 05:54:55 25 4
gpt4 key购买 nike

我在替换标记以 $ 字符开头的消息中的标记时遇到问题。

这是我尝试使用的代码:

$tag = '$TAG';
$message = '..text $TAGd d$TAG $TAG text..';
$pattern = '/\b\\'.$tag.'\b/';
echo $pattern."<br/>";
echo preg_replace($pattern, "REPLACED", $message);

输出:
/\b\$TAG\b/
..text $TAGd dREPLACED $TAG text..

我希望它替换 $TAG 的最后一次出现,因为它是唯一一个不受其他字符阻碍的。但是,无论我尝试什么,它都会不断替换第二个。

我尝试过的一些变体:
跳过 $tag 变量字符串连接
$message = '..text $TAGd d$TAG $TAG text..';
$pattern = '/\b\$TAG\b/';
echo $pattern."<br/>";
echo preg_replace($pattern, "REPLACED", $message);

输出:
/\b\$TAG\b/
..text $TAGd dREPLACED $TAG text..

删除 $ 前的反斜杠
$message = '..text $TAGd d$TAG $TAG text..';
$pattern = '/\b$TAG\b/';
echo $pattern."<br/>";
echo preg_replace($pattern, "REPLACED", $message);

输出:
/\b\$TAG\b/
..text $TAGd d$TAG $TAG text..

在 $ 之前添加第二个反斜杠
$message = '..text $TAGd d$TAG $TAG text..';
$pattern = '/\b\\$TAG\b/';
echo $pattern."<br/>";
echo preg_replace($pattern, "REPLACED", $message);

输出:
/\b\$TAG\b/
..text $TAGd dREPLACED $TAG text..

关于这个问题的任何帮助将不胜感激,因为我似乎无法理解我做错了什么。谢谢! :)

最佳答案

使用 \B用于单词的开头和 \b词尾:

$tag = '$TAG';
$message = '..text $TAGd d$TAG $TAG text..';
$pattern = '/\B\\'.$tag.'\b/';
echo $pattern."<br/>";
echo preg_replace($pattern, "REPLACED", $message);

对我来说工作得很好。我不知道为什么会这样,通常它应该只是 \b - 但它确实解决了问题。

关于php - 替换 PHP 中包含 $ 字符的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9620771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com