如何重写此代码,以便在第一个单词后面的最后几个单词周围包含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 :(得分:0)
匹配第一个单词后的所有内容,直到最后一个非空格
preg_replace('/\b[\w\'-]+\W+\K.*\S/s', '<span class="color_red">$0</span>', $atts['title']);
\b
匹配第一个字的[\w'-]+
word characters \W+
一个或多个非单词字符\K
resets报告的比赛开始.*\S
任何内容,直到最后一个非空格字符s
- flag用于使点匹配换行符u
标记以调整\b
,\w
,\W
答案 1 :(得分:0)
您也可以这样做..
$data = "Write your description here";
list($first,$last) = explode(" ", $data,2);
echo $newstring = $first." <span>".$last."</span>";