用正则表达式删除空格

时间:2013-10-03 11:25:32

标签: php regex

我想用正则表达式删除两个单词之间的空格,但这似乎不起作用。

$pattern = "#\<a href=\"(.+?) (.+?)\">#is";
$txt = preg_replace($pattern, "\<a href=\"\\1%20\\2\">", $txt);

我还需要这个用于多个单词,但只能使用标签,因为文本的其余部分应该有空格。所以str_replace不起作用(我想?)

任何提示?

3 个答案:

答案 0 :(得分:1)

稳定的解决方案是:使用DOM检索href值,使用str_replace()删除空格,然后再次使用DOM回写值。

不要使用正则表达式来处理html / xml。

答案 1 :(得分:0)

尝试使用此正则表达式代码删除空格

\ S +(?= [^()] * \

答案 2 :(得分:0)

你可以试试正则表达式:

$txt = preg_replace('~(?:href="|(?<!^)\G)\K([^" ]*)\s+~g', "$1%20", $txt);

\G在上一个匹配结束时匹配,以便您可以替换单个属性中的多个空格。

regex101 demo