2017-08-16 7 views
1

このコードを書き換えて、最初の単語の後の最後の単語の前後にhtmlタグを囲みます。最初の単語の後のすべてのテキストの周囲にhtmlタグをラップします。

preg_replace('/(?<=\>)\b\w*\b|^\w*\b/', '<span class="color_red">$0</span>', $atts['title']); 

この正規表現は、文字列の最初の単語の前後にタグを折り返します。私はこれを試しましたが、うまくいきません。

preg_replace('/(?<=\>)\b\w*\b|^\w*\b/', '<span class="color_red">$1</span>', $atts['title']); 

ここにいくつかの例を示します。

Efficiency <span class="color_red">solutions</span> 
Renewable <span class="color_red">Energy Solutions</span> 
Accidentally <span class="color_red">left the caps lock on and typed something</span> 

または、別の解決策を提示してください。

+0

strip_tags()を使用できます。 http://php.net/manual/en/function.strip-tags.php – Priyank

+0

タグを削除しようとしていません。私はタグを追加したい。 – LogicDev

+0

あなたの文字列が「あなたの説明をここに書いてください」とします。 とo/pを希望すると「ここにあなたの説明を書きます」 これは間違いありませんか? – Priyank

答えて

1

最後の非空白文字まで

preg_replace('/\b[\w\'-]+\W+\K.*\S/s', '<span class="color_red">$0</span>', $atts['title']); 
  • \bマッチはcharacter class
  • の最初の単語の word boundary
  • [\w'-]+一つ以上word characters、単一引用符やハイフンをinital最初の単語の後にすべてを一致させるには
  • \W+ 1つ以上の非ワード文字
  • 入力がUTF-8であれば、\bを調整するunicode regexためuフラグを追加ドットマッチ改行
  • を作るためのflag\w - 報告マッチ
  • .*\S何の始まり最後の非空白文字
  • sまで、\W

See this demo at regex101

0

この方法でもできます。

関連する問題