我有一个文本,比如:
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()
中)?
一种相当简单的方法:
$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) 重建字符串。
使用str_replace
函数:
$string = "Sample Sample Sample Sample Sample";
$name = str_replace(' ', '_', $string );
echo $name;