2017-08-16 51 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

要在character class匹配的第一個字之後一切,直到最後一個非空白

preg_replace('/\b[\w\'-]+\W+\K.*\S/s', '<span class="color_red">$0</span>', $atts['title']); 
  • \b場比賽第一個字
  • [\w'-]+一個或多個word characters,單引號和連字符初始索word boundary
  • \W+一個或多個非單詞字符
  • \K resets開始報道比賽
  • .*\S什麼,直到最後一個非空白字符
  • s的 - flag爲了使點匹配換行符
  • 如果輸入的是UTF-8,加u標誌unicode regex調整\b\w\W

See this demo at regex101

0

你可以用這種方式也做到這一點..

$data = "Write your description here"; 
list($first,$last) = explode(" ", $data,2); 
echo $newstring = $first." <span>".$last."</span>"; 
相關問題