0

我有这样的文字:

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

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

4

2 回答 2

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) 重构字符串。

于 2012-09-03T10:28:39.587 回答
0

使用str_replace功能:

$string = "Sample Sample Sample Sample Sample";
$name = str_replace(' ', '_', $string );
echo $name;
于 2012-09-03T10:22:16.770 回答