javascript - tinymce分页未关闭的div

标签 javascript php html tinymce

我使用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 跨越了各种失败案例

失败案例:

  1. 有不当<div>标签

    <div></div></div><div>

  2. 如果我们有 <div class="foobar"> ,那么就不会被观察到

  3. 如果我们有 <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>');

Here's the Eval Example

第二种方式

统计preg-match-all出现的次数

计算<div的数量在页面/段落中计算divOpen

计算</div>的数量在页面/段落中计算divClose

可以通过以下方式完成

preg_match_all('~<div\b[^>]*>~', $str, $match);

preg_match_all('~</div>~', $str, $match);

Here's the Eval Example

注意:

如果输入是错误的 HTML,即具有不正确的 <div></div></div><div>它会失败。

那么解决这个问题的步骤是识别正确引用的 <div> 的数量。并被不当引用<div> 。并尝试替换或删除错误放置的 <div> 。因此,建议在数据库中使用良好的 HTML。

关于javascript - tinymce分页未关闭的div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30963793/

相关文章:

iphone - 如何使用 CSS 在 iPhone 上最大化 webapp 高度? (正确隐藏 URL 栏)

html - 用于阅读 HTML 中替代文本(例如罗马数字)的 ARIA 属性

javascript - 每次点击重置 CSS 翻转动画

javascript - 选择数据属性等于任意值的元素

php - Symfony 弃用函数

javascript - $watch 没有在函数之外更新数组?

php - 错误 400 : PHP 5. 4 个应用程序被阻止部署到 Google App Engine

php 和 mysql 列出数据库并循环结果

javascript - 在 Aurelia 中,如何根据按键事件获取文本区域内光标的坐标?

javascript - 如何将面添加到索引 THREE.BufferGeometry?