gpt4 book ai didi

php - str_replace 和 preg_replace 尝试?

转载 作者:行者123 更新时间:2023-12-04 06:15:43 28 4
gpt4 key购买 nike

我正在尝试替换原始文本中的字符串。 ( zinc --> zn )

示例:'zinc zinc zinc zinc3 !zinc zincmatic #zinc zinc9 Zinc @zinc@'
旺旺:'zn zn zn zinc3 !zn zincmatic #zinc zinc9 zn @zinc@'
str_iplace 尝试:

$text = 'zinc zinc zinc zinc3 !zinc zincmatic #zinc zinc9 Zinc @zinc@';
$word = 'zinc';
$attr = 'zn';

// cant str_ireplace now as zincmatic will turn into znmatic and #zinc will turn into #zn
$text = ' '.$text.' ';
$word = ' '.$zinc.' ';

// will try now
$result = str_ireplace($word, $attr, $word);
echo trim($result);

版画 zn zinc zn zinc3 !zinc zincmatic #zinc zinc9 zn @zinc@ .仍然有问题为 !zinc第二个 zinc由于空间问题。。

preg_replace 尝试:
$text = 'zinc zinc zinc zinc3 !zinc zincmatic #zinc zinc9 zinc';
$word = 'zinc';
$attr = 'zn';
$result = preg_replace("/\b($word)\b/i",$attr,$text);
echo $result;

版画 zn zn zn zinc3 !zn zincmatic #zn zinc9 zn @zn@几乎得到了我想要的:似乎锌会变成 zn即使附近有一些特殊的字符,如 !zinc#zinc但不是如果有一个数字 zinc9或类似 zincmatic 的文字

我只想在这里放一个规则,以便 #zinc保留 #zinc , @zinc@保留 @zinc@!zinc转至 !zn
如果锌在其中一个附近,是否有办法为特殊字符添加一些异常(exception)(即: #zinczinc#zinc@@zinc )

我想成为执行者的字符是 # , & , @
谢谢!

最佳答案

您可以使用负值 assertions 定义此类异常。 .它们的行为类似于 \b并且实际上可以结合使用。

在您的情况下,您想要 (?<![#&@])探测前面的字符,和 (?![#&@])测试以下字符。

= preg_replace("/(?<![#&@])\b($word)\b(?![#&@])/i",$attr,$text);

关于php - str_replace 和 preg_replace 尝试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7281275/

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