0

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

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

我还需要它来处理多个单词,但只能使用标签,因为其余的文本应该有空格。所以 str_replace 不起作用(我认为?)

有小费吗?

4

3 回答 3

1

The stable solution would be: Use DOM to retrieve the href value, use str_replace() to remove the spaces and then write back the value using DOM again.

Don't use regexes to handle html / xml.

于 2013-10-03T11:31:14.237 回答
0

您可以尝试正则表达式:

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

\G匹配上一个匹配项的末尾,以便您可以替换单个属性中的多个空格。

正则表达式 101 演示

于 2013-10-03T11:41:40.503 回答
0

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

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

于 2013-10-03T11:31:41.770 回答