我有通过Wordpress输出的内容,并在内容周围包含段<p>
标记。我需要删除第一个<p></p>
内的内容。我该怎么做?
例如,输出为:
<p>Posted by Bob</p>
<p>This is the content here</p>
<p>This is the second paragraph</p>
我想删除第<p>Posted by Bob</p>
行,剩下的就行了。
答案 0 :(得分:2)
通常,you should not parse HTML with regex。
在这种情况下,正则表达式解决方案可能正常工作:
$str = preg_replace('~<p>.*?</p>~s', '', $str, 1);
重要的事情是
?
使.*
不合适(以便尽快停止,直至最后</p>
s
,以便.
能够匹配新行1
,以便只删除第一个匹配如果您只想删除标记的内容(所以如果您想保留一个空段落),只需使用<p></p>
作为替换字符串。
然而,正如我所说,这仍然不是一个完美的解决方案。考虑评论中的<p>
标记,或具有属性甚至无效HTML的<p>
标记。 PHP附带DOM parser。如果您可以使用第三方库,还有this one,使用起来非常方便,并且使问题几乎无足轻重:
require "simple_html_dom.php";
$html = new simple_html_dom($input);
$html->load($input);
$html->find('p', 0)->outertext = "";
$output = $html->save();
同样,如果您只想清空代码,但保留代码,请将outertext
替换为innertext
。
答案 1 :(得分:0)
如果您有权访问jQuery,可以使用以下命令:
$("p:first-child").text("Hello World!");
要在WordPress中包含jQuery,请在<head></head>
中添加以下内容:
<?php wp_enqueue_script("jquery"); ?>
<?php wp_head(); ?>
这包括jQuery以安全的方式,并防止与jQuery或其他库的其他实例的任何冲突。