2017-09-18 7 views
-3

PHP正規表現たとえば、特定の単語

<?php 
$html = "<p>Lorem ipsum lorem ipsum lorem ipsum</p> 
     <p>Lorem ipsum lorem ipsum lorem ipsum</p> 
     <p>Read : SOME ARTICLE</p> 
     <p>Lorem ipsum lorem ipsum lorem ipsum"; 
?> 

でタグを削除し、私はPHPの正規表現を使用し、多分、<p>Read : SOME ARTICLE</p>を削除したいです。

<p>Read : **** </p>からの開始方法は終了しました。

おかげ

+3

? Regexの代わりにDOMDocumentを見てください。 –

+0

"始める方法

から:****

がなくなった。"私はこれがあなたが求めている実際の質問だと思う。しかし、私は本当にそれを取得していません。あなたは言い換えることができますか?より多くのサンプル入力と望ましい出力を与えますか?たぶん[mcve]に行きましょう。 – Yunnosch

+0

私はいくつかの文書に同意しますが、あなたはregexを主張しています:https://regex101.com/r/0VB1hi/1 – Andreas

答えて

1

はあなたがDOMDocument代わりのRegexを使用する必要がありますpreg_relace

$html = "<p>Lorem ipsum lorem ipsum lorem ipsum</p> 
     <p>Lorem ipsum lorem ipsum lorem ipsum</p> 
     <p>Read : SOME ARTICLE</p> 
     <p>Lorem ipsum lorem ipsum lorem ipsum"; 

$html = preg_replace("/(<p>Read :.*?<\/p>)/", "", $html); 
echo $html; 

DEMO

+1

'。*'は怠けてはいけませんか? '。*?'? – Andreas

2

を使用するようにしてください。

LIBXML_HTML_NODEFDTDLIBXML_HTML_NOIMPLIEDをオプションで使用すると、htmlタグを避けることができます。あなたは試してみました何

Try this code snippet here

<?php 
ini_set('display_errors', 1); 
$html = "<p>Lorem ipsum lorem ipsum lorem ipsum</p> 
     <p>Lorem ipsum lorem ipsum lorem ipsum</p> 
     <p>Read : SOME ARTICLE</p> 
     <p>Lorem ipsum lorem ipsum lorem ipsum"; 

$domDocument = new DOMDocument(); 
$domDocument->loadHTML($html,LIBXML_HTML_NODEFDTD|LIBXML_HTML_NOIMPLIED); 

$domXPath = new DOMXPath($domDocument); 
$results = $domXPath->query("//p[contains(.,'Read :')]");//querying p node which contains `Read: ` 

$nodeToremove=$results->item(0); 
$nodeToremove->parentNode->removeChild($nodeToremove);//Removing node 
echo $domDocument->saveHTML(); 
+2

DOMは道のりです。 – Toto

関連する問題