lau*_*kok 5 html php regex xpath domxpath
<br/>如果之前或之后没有文字,我该如何删除?
例如,
<p><br/>hello</p>
<p>hello<br/></p>
Run Code Online (Sandbox Code Playgroud)
他们应该像这样重写,
<p>hello</p>
<p>hello</p>
Run Code Online (Sandbox Code Playgroud)
我应该使用DOMxpath还是正则表达式会更好?
(注意:我有一篇关于先前使用DOMxpath 删除的帖子<p><br/></p>,然后我遇到了这个问题!)
编辑:
如果我在输入中有这个,
$content = '<p><br/>hello<br/>hello<br/></p>';
Run Code Online (Sandbox Code Playgroud)
那应该是
<p>hello<br/>hello</p>'
Run Code Online (Sandbox Code Playgroud)
要选择提到的 br,您可以使用:
"//p[node()[1][self::br]]/br[1] | //p[node()[last()][self::br]]/br[last()]"
Run Code Online (Sandbox Code Playgroud)
或者,(也许)更快:
"//p[br]/node()[self::br and (position()=1 or position()=last())]"
Run Code Online (Sandbox Code Playgroud)
当 p 的第一个(或最后一个)节点是 br 时,只需获取 br。
这将选择 br 例如:
<p><br/>hello</p>
<p>hello<br/></p>
Run Code Online (Sandbox Code Playgroud)
第一个和最后一个 br 像这样:
<p><br/>hello<br/>hello<br/></p>
Run Code Online (Sandbox Code Playgroud)
不是像这样的中间 br:
<p>hello<br/>hello</p>
Run Code Online (Sandbox Code Playgroud)
PS:最终得到像这样的一对中的第一个 br <br/><br/>:
"//br[following::node()[1][self::br]]"
Run Code Online (Sandbox Code Playgroud)