PHP - 匹配HTML标记未包含的空格

时间:2012-09-03 10:11:46

标签: php regex

我的文字如下:

Word word word <a href=google.com>word word word</a> word word word

我需要空格的位置,这些位置没有被任何html标签包围 - 下面加下划线的空格位置:

Word_word_word_<a href=google.com>word word word</a>_word_word_word

我应该使用什么正则表达式(在preg_match()中)?

2 个答案:

答案 0 :(得分:1)

一种相当直接的方法:

$test = 'Word word word <a href=google.com>word word word</a> word word word';
$t = preg_replace('#\s+((?=.*<a)|(?!.*</a>))#', '_', $test);
var_dump($t); 
// string 'Word_word_word_<a href=google.com>word word word</a>_word_word_word'

显然,它不会对可能包含多个嵌入式href的字符串起作用;对于这些情况,我建议采用另一种方法:1)将字符串拆分为<a href...>...</a>部分,2)替换非链接部分中的所有空格; 3)重建字符串。

答案 1 :(得分:0)

使用str_replace功能:

$string = "Sample Sample Sample Sample Sample";
$name = str_replace(' ', '_', $string );
echo $name;