2013-10-03 214 views
0

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

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

我也需要这个工作多个单词,但只有标签,因为其余的文本应该有空格。所以str_replace不会工作(我认为?)

任何提示?

+0

你说得对。 'str_replace()'不适合这种情况。 – Treffynnon

+0

浏览器不会为您编码网址吗? –

回答

1

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

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

0

试试这个正则表达式的代码删除空格

\ S +(= ^()] * \

0

您可以尝试正则表达式:在结束

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

\G比赛以便您可以用单个属性替换多个空格。

regex101 demo

+0

出于某种原因,这只是崩溃我的脚本。这应该与其他2或在一个分离功能? – Coolcrab

+0

@Coolcrab难道是你有一个巨大的文件来处理?正则表达式在处理大页面时很糟糕;你可能想要在一段时间内处理几行。而且,你认为'应该与其他2'是什么意思? – Jerry