如果任何单词的起始和结尾字符为?,那么两者都有?应该在PHP中删除

时间:2013-01-10 08:57:40

标签: php regex

我想删除PHP代码中段落中的几个问号。

例如:

$str = " Hi ?How? are you? Hope you are good. ";

输出应为:

$str = " Hi How are you? Hope you are good. ";

所以段落中有开头和结尾字的单词“?” (问号),然后应删除两个问号。请建议。请提出实现这一目标的最佳方法。

5 个答案:

答案 0 :(得分:0)

试试这个:

$str = " Hi ?How? are you? Hope you are good. ";

$newstr = preg_replace('/\?([a-z0-9]{1,}?)\?/si','$1',$str);
echo $newstr;

答案 1 :(得分:0)

尝试以下方法:

$str = preg_replace('/\\?(\\w+)\\?','$1',$str);

这将匹配?包围的任何“单词”。 \w匹配“任何单词字符(字母,数字,下划线)”。 +表示“一个或多个”。如果您还想匹配??并将其删除,则可以将其替换为*

答案 2 :(得分:0)

$string = " Hi ?How? are you? Hope you are good. ";
$pattern = "/\?(\w+)\?/";
$replacement = '${1}';
echo preg_replace($pattern, $replacement, $string);

答案 3 :(得分:0)

$str = " Hi ?How? are you? Hope you are good. ";
echo preg_replace("/\?(\w+)\?/", "$1", $str);

答案 4 :(得分:0)

最简单的正则表达式是\?([^\?\s]+)\?,然后你的单词就在第一组。你可能不得不像php那样逃避它。