str_replace对html内容无效

时间:2018-01-14 12:38:57

标签: php html phpword

我有这个HTML内容:

$test = '<section><div class="row">
        <div class="col-xs-12" data-type="container-content">
        <section data-type="component-photo"><div class="photo-panel">
        <img src="http://somewhere.com/XpV8lCLD6pChrysanthemum.jpg" width="100%" height="" style="display: inline-block;">
</div></section></div>
</div></section>';

我有str_replace的代码,因此它会为 img 添加结束标记:

$new = str_replace('"></div>', '"/></div>', $test);

echo $new;

使用inspect元素检查时,图像未按预期关闭。我在这里做错了什么?

附加说明:

我需要PHPWord的结束标记才能工作。此外,$test的值来自$_POST,因为它是通过AJAX提供的。

谢谢

2 个答案:

答案 0 :(得分:1)

标记和结束标记之间有换行符。您应该重新格式化$ test变量或使用:

$new = preg_replace('/>[\n\r]<\/div>/', '/></div>', $test);

然而,由于所有比赛都将被替换,因此您处于危险区域。 HTML是一种not play well with regex的语言。

如果可能的话,在采用html格式之前解决问题要好得多。

答案 1 :(得分:1)

要做你想要的,你需要搜索该行中的文本(其他答案也更直接地告诉 - 问题是换行符。

$new = str_replace('ck;">\n</div><section>','ck;">\n</div></div><section>',$test);