在我的数据库中,一些文本存储为
<p>texxxxxxxxxxt1</p>
<p> </p>
<p>textttttttttt2</p>
<p> </p>
<p> </p>
<p>teeeeeeeeeext3</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
当我显示它们时,我希望删除那些最后的空白......我已经尝试了很多东西,但没有一个有效......我想了想
$content = preg_replace("#(<p> <'/p>)+$#", '', $content);
$content = preg_replace("#(<p> <'/p>'r)+$#", '', $content);
和其他人,但由于换行符,它们不起作用......知道吗?最终结果应该是这样的
<p>texxxxxxxxxxt1</p>
<p> </p>
<p>textttttttttt2</p>
<p> </p>
<p> </p>
<p>teeeeeeeeeext3</p>
提前感谢!
如果你最后只有<p> </p>
,你可以使用它:
(['n'r]*<p> <'/p>)*$
演示:https://regex101.com/r/rS3uY3/1
如何将字符串分解为数组(在换行符上),然后从数组的后面循环。如果它等于 <p> </p>
,则将其从数组中弹出。最后将数组连接回字符串。
这里有一个递归函数:
<?php
$str = "<p>text1</p>
<p> </p>
<p>text2</p>
<p> </p>
<p> </p>
<p>text3</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>";
$substring = "<p> </p>";
function magic($str, $substring) {
$str = trim(rtrim($str));
if (substr($str, (strlen($str) - strlen($substring)), strlen($str)) == $substring) {
$str = trim(rtrim(substr($str, 0, strlen($str) - strlen($substring))));
$str = magic($str, $substring);
}
return $str;
}
echo magic($str, $substring);