2016-05-04 11 views
0

Ich bin in Problem, bestimmte url aus Text zu entfernen, aber halten Sie die Text-oder HTML-Tags zwischen dem Anker-Tag. Aber ich kann es nicht entfernen. Ich entferne die spezifische URL aus dem Text, kann aber nicht den Text oder HTML zwischen dem Anchor-Tag abrufen. Hier ist mein Code, um bestimmte URL aus dem Text zu entfernen.wie bestimmte URL aus Text in Regex zu entfernen

preg_replace(|<a [^>]*href="http://www.microsoft.com[^"]*"[^>]*>.*</a>|iU, '', $a) 

und hier ist die Probe

<a href="http://www.microsoft.com/"> <img src="http://c.s-microsoft.com/en-in/CMSImages/MMD_TCFamily_1006_540x304.jpg?version=ac2c5995-fde2-b40b-3f2a-b6a0baa88250" class="mscom-image feature-image" alt="Learn about Lumia 950 and Lumia 950 XL." width="540" height="304"> </a> 

ich das img-Tag oder einen beliebigen Text zwischen diesem Anker-Tag mit der spezifischen URL erhalten möchten.

Habe ich einen Fehler in meinem Code gemacht. Bitte korrigieren Sie mich. Ich möchte dies in Regex in PHP Bitte helfen Sie mir.

+1

Ist das Ihre tatsächliche PHP? Was passiert bei der aktuellen Ausführung? Befindet sich der Quellcode in einer Zeile? – chris85

+0

zuallererst, entgehen den foward Slashs. –

+0

@lbarros Vorwärts Schrägstriche sind nicht speziell, müssen nicht maskiert werden. Das '|' ist das Trennzeichen. – chris85

Antwort

1

wir wieder hier gehen ... Don't use regexes to parse html, verwenden Sie einen HTML-Parser, DOMDocument zum Beispiel:

$html = <<< EOF 
<a href="http://www.microsoft.com/"> <img src="http://c.s-microsoft.com/en-in/CMSImages/MMD_TCFamily_1006_540x304.jpg?version=ac2c5995-fde2-b40b-3f2a-b6a0baa88250" class="mscom-image feature-image" alt="Learn about Lumia 950 and Lumia 950 XL." width="540" height="304"> SOME TEXT </a> 
EOF; 

$dom = new DOMDocument(); 
$dom->loadHTML($html); 
$xpath = new DOMXPath($dom); 
foreach($xpath->query("//a[contains(@href,'microsoft.com')]") as $element){ 
     $img = $xpath->query('./img',$element)->item(0); 
     echo $img->getAttribute('src'); // img source 
     echo $img->getAttribute('alt'); // img alt text 
     echo $element->textContent; //text inside the a tag 
} 
//http://c.s-microsoft.com/en-in/CMSImages/MMD_TCFamily_1006_540x304.jpg?version=ac2c5995-fde2-b40b-3f2a-b6a0baa88250 
//Learn about Lumia 950 and Lumia 950 XL. 
//SOME TEXT 

Ideone Demo