我使用tinymce分页符来分隔内容,在php端我想在分页符后仅显示第二部分:
$str = '<div>
<p dir="rtl" style="text-align: justify;"><span style="font-size:medium;"><!-- pagebreak --></span></p><p>fdsfsdf f sf f s</p></div>'
$arr = explode("<!-- pagebreak -->", $str);
当我只想使用 echo $arr[0]
时或echo $arr[1]
它已打开<div>
标签,这会破坏整个网站
最佳答案
OP 表示他不确定关闭 </div>
我建议用这种方法来处理这个问题
第 1 步:
查看是否已关闭<div>
或不
可以通过查找div
出现的次数来完成在专栏中
$occurance = substr_count($arr[0], 'div');
第 2 步:
如果你有像 2,4,6 这样的偶数,那么你可以假设 div 是关闭的,否则 div 没有关闭。
$occurance = substr_count($arr[0], 'div');
if ($occurance % 2 != 0) {
echo '</div>'
}
如果是偶数,则可以保持原样。否则添加</div>
到它
多一点解释
$occurance = substr_count($arr[0], 'div');
if ($occurance % 2 == 0)
{
// do nothing
}
else
{
echo '</div>'; // adding closed div
}
注意:
我相信您没有在文本区域中添加不必要的 div
更新:
与Lajos Arpad讨论后,我只用 substr_count
跨越了各种失败案例
失败案例:
有不当
<div>
标签<div></div></div><div>
如果我们有
<div class="foobar">
,那么就不会被观察到如果我们有
<div>division by 0</div>
那么就不会被观察到。
如何克服
在这次谈话之后我想了想,得出的结论是
open
只有一种可能一个div
即,
<div*
divOpen 将有 <div>
或<div class=*** >
或<div id=***>
close
只有一种可能一个div
即,
</div>
第一种方法
统计subtr-count出现的次数
计算<div
的数量在页面/段落中计算divOpen
计算</div>
的数量在页面/段落中计算divClose
可以通过以下方式完成
$divOpen = substr_count($str, '<div');
$divClose = substr_count($str, '</div>');
第二种方式
统计preg-match-all出现的次数
计算<div
的数量在页面/段落中计算divOpen
计算</div>
的数量在页面/段落中计算divClose
可以通过以下方式完成
preg_match_all('~<div\b[^>]*>~', $str, $match);
preg_match_all('~</div>~', $str, $match);
注意:
如果输入是错误的 HTML,即具有不正确的 <div></div></div><div>
它会失败。
那么解决这个问题的步骤是识别正确引用的 <div>
的数量。并被不当引用<div>
。并尝试替换或删除错误放置的 <div>
。因此,建议在数据库中使用良好的 HTML。
关于javascript - tinymce分页未关闭的div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30963793/