次のようなテキストがあります。
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;