如何只跨越php的单词?

时间:2016-10-06 21:32:28

标签: php regex preg-replace

我有一个混合了html的文本字符串,需要将单词分开并将它们换成跨度。

字符串:

$string ='<div class="something">What </div> if it it is is same <div style="color:red;">same </div>';

期望的输出

<div class="something">
  <span class="splits split1">
    What
  </span>
</div>
<span class="splits split2">
  if
</span>
<span class="splits split3">
  it
</span>
<span class="splits split4">
  it
</span>
<span class="splits split5">
  is
</span>
<span class="splits split6">
  is
</span>
<span class="splits split7">
  same
</span>
<div style="color:red;">
  <span class="splits split8">
    same
  </span>
</div>

我尝试了所有我能想到的东西,带有字边界的preg_replace,preg_match,str_replace,带爆炸的组合,循环和替换,但是这样或那样的输出失败并制动html或者在不应该的地方添加替换。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

正如@MarcB所说,这里的DOM生活更美味但是由于问题标记为,这可能是一种解决方法(尽管不是%100保证):

lua5.3-lpeg

PHP:

</?\b[^<>]+>(*SKIP)(*F)|\w+

Live demo