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 验证