1

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>て残りを残したいのですが。

4

2 に答える 2

2

通常、正規表現を使用してHTMLを解析しないでください

この場合、正規表現ソリューションは正常に機能する可能性があります。

$str = preg_replace('~<p>.*?</p>~s', '', $str, 1);

重要なことは

  • これ?.*貪欲になります(できるだけ早く停止し、最後まで継続しないようにするため)</p>
  • 新しい行に一致できるようにsする修飾子.
  • 1最初の一致のみが削除されるようにする制限

タグの内容のみを削除したい場合(つまり、空の段落を保持したい場合)は、単に<p></p>置換文字列として使用します。

しかし、私が言ったように、これはまだ完璧な解決策ではありません。<p>コメント内の<p>タグ、または属性や無効なHTMLを含むタグについて考えてみてください。PHPにはDOMパーサーが付属しています。サードパーティのライブラリを使用できる場合は、これもありますこれは非常に便利で、問題はほとんど簡単です。

require "simple_html_dom.php";

$html = new simple_html_dom($input);
$html->load($input);

$html->find('p', 0)->outertext = "";

$output = $html->save();

同様に、タグを空にしたいがそのままにしておきたい場合は、に置き換えoutertextますinnertext

于 2012-11-07T09:41:43.703 に答える
0

jQueryにアクセスできる場合は、次を使用できます。

$("p:first-child").text("Hello World!");

WordPressにjQueryを含めるには、以下を追加します<head></head>

<?php wp_enqueue_script("jquery"); ?>
<?php wp_head(); ?>

これには安全な方法でjQueryが含まれ、jQueryの他のインスタンスまたは他のライブラリとの競合を防ぎます。

于 2012-11-07T09:40:44.807 に答える