PHP str_ireplace 结束 html(<p>) 标签


PHP str_ireplace ends html(<p>) tag

str_ireplace replace 结束我的 HTML 标签。

            $txt = '<p><strong>Add on </strong>[number],<strong> number nr </strong></p>';
            $htmlValue = '<div class="resizing-input"><input type="text" value="1"><span style="display:none"></span></div>';
            $text = str_ireplace('[number]', $htmlValue, $txt);//It needs to be case-insensitive so str_ireplace not str_replace.
            echo'<pre>';print_r($text);echo'</pre>';die;
            //return: <pre><p><strong>Add on </strong></p><div class="resizing-input"><input type="text" value="1"><span style="display:none"></span></div>,<strong> number nr </strong><p></p></pre>
            //should return: <pre><p><strong>Add on </strong><div class="resizing-input"><input type="text" value="1"><span style="display:none"></span></div>,<strong> number nr </strong></p></pre>

为什么会这样?
我想将 [] 到 html 之间的字符串替换,但它结束了另一个 html </p>标签。同样的事情也发生在str_replace身上。

问题是我不能在<p>元素中写入<div>标签。
p 元素的语法不允许使用div 子元素,并且可以省略结束标记</p>,验证器(和浏览器)在解析 p 元素时遇到 <div> 标记时暗示</p>。也就是说,当 p 被解析(或"打开")时,div 元素的开始标记会隐式关闭它。

作用域中没有 p 元素,但可以看到 p 结束标记.w3c 验证