为什么 preg_replace 从字符串中删除 + 号?我要 + 号包括

Why preg_replace is removing + sign from string? I want + sign to include

字符串:Two + Two & One + One ?

如何包含 + 符号。我不想同时删除 + 符号,用 - 替换 &。我使用了以下

$string = preg_replace('/&#?[\+\sA-Za-z0-9]+;/i', '-', $string);

它给出结果:Two Two - One One ?

要求的结果:Two + Two - One + One ?

注意:您可以建议任何 preg_replace 包含 + 符号并用 - 替换 &。我在 WordPress 网站上。

我在 Whosebug 上没有找到我的问题的任何答案。每个人都在谈论删除 + 标志。但我希望它包括。

用这个

$string = preg_replace('/&/i', '-', $string);

使用正则表达式,这就是您所需要的:

<?php

$regex = '#\&(amp;)?#';
echo preg_replace($regex, '-', 'Two + Two & One + One ?') . "\n";
echo preg_replace($regex, '-', 'Two + Two &amp; One + One ?') . "\n";

输出:

Two + Two - One + One ? 
Two + Two - One + One ?

你可以在这里看到https://3v4l.org/s1tVW

在这里玩正则表达式 https://regex101.com/r/G7CbKF/1