tinymce pagebreak unclosed div

时间:2015-06-21 11:02:34

标签: 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>标记,这将打破整个网站

1 个答案:

答案 0 :(得分:2)

由于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>,则不会被观察到。

  4. 如何过来

    然后我在这次谈话后有点想一想并得出结论

    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。