2017-08-16 34 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>"; 
相关问题