2016-12-27 20 views
-1

私はブロッククォートを取り出し、ワードプレスの投稿内容を<p>タグに入れます。段落タグから画像を削除する

<?php 
    $content = preg_replace('/<blockquote>(.*?)<\/blockquote>/', '', get_the_content()); 
    $content = wpautop($content); // Add paragraph-tags 
    $content = str_replace('<p></p>', '', $content); // remove empty paragraphs 
    echo $content; 
?> 

それは私がここで

+0

1.正確に何をしたいのですか? 2.自分で何かを書こうとしましたか? 3.出力はどのように見えますか? – Dekel

+0

イメージのために別の '' 'preg_replace'''を実行する必要があります。 [Here](http://wordpress.stackexchange.com/questions/7090/stop-wordpress-wrapping-images-in-a-p-tag)はパターンの例です。 – CUGreen

答えて

1

をしたくない<p>タグで画像を置くしかし、それを行う必要がありますいくつかのコードは(テストしていない)です。

$dom = new domDocument; 
$dom->loadHTML($content); 
$dom->preserveWhiteSpace = false; 
$images = $dom->getElementsByTagname('img'); 
$removeList = array(); 
foreach ($images as $domElement) { 
    $removeList[] = $domElement; 
} 
foreach ($removeList as $toRemove) { 
    $toRemove->parentNode->removeChild($toRemove); 
} 
$content = $dom->saveHTML(); 

(PS:これはまた、それは本当に重要ではないことを、あなたに非preg_replace方法を提供します)

str_replace後の行で
<?php 
    $content = preg_replace('/<blockquote>(.*?)<\/blockquote>/', '', get_the_content()); 
    $content = wpautop($content); // Add paragraph-tags 
    $content = str_replace('<p></p>', '', $content); // remove empty paragraphs 
    $content = preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content); // remove paragraphs around img tags 
    echo $content; 
?> 
+0

ありがとうございます!私は多くの人がpregreplaceを使用しないと言うことを知っている – user3550879

+0

おそらく、コードの注入の危険性のために、わからない。 – CUGreen

0

あなたはこの domDocumentメソッドを使用することができます
+0

domDocumentsに入れることは決してできません。彼らはいつもエラーを投げたり、うまく動作していないようです。 – user3550879

+0

私は長年にわたって上記を使用してきました。ゼロ誤差、いつも働く。複雑な 'preg_replace()'はありません。 – Abela

+0

オハイオ州オハイオ州、私の終わりのそのprob。私は通常これらのタイプのコードをタグに入れます – user3550879

関連する問題