如何避免substr()破坏html标签? Live Demo

这是我的代码:

$desc = "this <br>is a test";
$maxLen = 7;
$structured_desc = "<span>" . mb_substr($desc,$maxLen) . "</span>" . mb_substr($desc,$maxLen);
echo $structured_desc;

这是上面代码的结果:

// output: <span>this <b</span>r>is a test

现在我要避免发生这种情况。我的意思是,</span>不能添加在<br>标记的中间。

注意::我保证该字符串是包含<br>标签的字符串。

因此,如果</span>标签之间有任何意外(最好在此之前),则应在<br>标签之前或之后添加{1>}标签。

任何想法我该怎么做?


这是预期的结果:

// expected output: <span>this </span><br>is a test
lengleng123456 回答:如何避免substr()破坏html标签? Live Demo

您可以通过在串联行之后添加preg_replace()来解决此问题。这是模式:

/<([^>]*)<\/span>([^>]*)>/

Live Demo


Full code:

$desc = "this <br>is a test";
$maxLen = 7;
$structured_desc = "<span>" . mb_substr($desc,$maxLen) . "</span>" . mb_substr($desc,$maxLen);
$structured_desc = preg_replace('/<([^>]*)<\/span>([^>]*)>/','<span><$1$2>',$structured_desc);
echo $structured_desc;

//=> <span>this <span><br>is a test
本文链接:https://www.f2er.com/3168356.html

大家都在问