2017-05-02 1 views
0

Ich muss preg_replace Syntax zu finden und zu ersetzen den img src Host-Namen von xyz.com zu abc.host.prov.com Baisse meine img HTML-Tag sieht so aus,preg_replace Syntax zum Ersetzen von Image src Hostname mit neuen Hostnamen

<img class="aligncenter wp-image-27283 size-large" src="http://example.com/wp-content/uploads/2017/04/image-3-1024x1024.jpeg" alt="homemade chocolate recipe" width="640" height="640" srcset="http://example.com/wp-content/uploads/2017/04/image-3-1024x1024.jpeg 1024w, http://example.com/wp-content/uploads/2017/04/image-3-300x300.jpeg 300w, http://example.com/wp-content/uploads/2017/04/image-3-768x768.jpeg 768w, http://example.com/wp-content/uploads/2017/04/image-3-696x696.jpeg 696w, http://example.com/wp-content/uploads/2017/04/image-3-1068x1068.jpeg 1068w, http://example.com/wp-content/uploads/2017/04/image-3-420x420.jpeg 420w, http://example.com/wp-content/uploads/2017/04/image-3-560x560.jpeg 560w, http://example.com/wp-content/uploads/2017/04/image-3.jpeg 1080w" sizes="(max-width: 640px) 100vw, 640px" /> 

und hat mit diesem

<img class="aligncenter wp-image-27283 size-large" src="http://abc.host.prov.com/wp-content/uploads/2017/04/image-3-1024x1024.jpeg" alt="homemade chocolate recipe" width="640" height="640" srcset="http://abc.host.prov.com/wp-content/uploads/2017/04/image-3-1024x1024.jpeg 1024w, http://abc.host.prov.com/wp-content/uploads/2017/04/image-3-300x300.jpeg 300w, http://abc.host.prov.com/wp-content/uploads/2017/04/image-3-768x768.jpeg 768w, http://abc.host.prov.com/wp-content/uploads/2017/04/image-3-696x696.jpeg 696w, http://abc.host.prov.com/wp-content/uploads/2017/04/image-3-1068x1068.jpeg 1068w, http://abc.host.prov.com/wp-content/uploads/2017/04/image-3-420x420.jpeg 420w, http://abc.host.prov.com/wp-content/uploads/2017/04/image-3-560x560.jpeg 560w, http://abc.host.prov.com/wp-content/uploads/2017/04/image-3.jpeg 1080w" sizes="(max-width: 640px) 100vw, 640px" /> 

Vielen Dank im Voraus

Antwort

0

Sie können diese ersetzt werden versuchen:

https?:\/\/\Kexample\.com 

und ersetzen durch das:

abc.host.prov.com 

Regex Demo

Beispielcode:

$re = '/https?:\/\/\Kexample\.com/'; 
$str='YOUR INPUT STRING GOES HERE'; 
$result = preg_replace($re, $subst, $str); 
1

Sie DOM verwenden sollten HTMLstattRegex zum Parsen, für einen String-Parsing Sie könnenverwenden

Lösung 1:

<?php 

ini_set('display_errors', 1); 
$string =' 
<html> 
    <body> 
     <img class="aligncenter wp-image-27283 size-large" src="http://example.com/wp-content/uploads/2017/04/image-3-1024x1024.jpeg" alt="homemade chocolate recipe" width="640" height="640" srcset="http://example.com/wp-content/uploads/2017/04/image-3-1024x1024.jpeg 1024w, http://example.com/wp-content/uploads/2017/04/image-3-300x300.jpeg 300w, http://example.com/wp-content/uploads/2017/04/image-3-768x768.jpeg 768w, http://example.com/wp-content/uploads/2017/04/image-3-696x696.jpeg 696w, http://example.com/wp-content/uploads/2017/04/image-3-1068x1068.jpeg 1068w, http://example.com/wp-content/uploads/2017/04/image-3-420x420.jpeg 420w, http://example.com/wp-content/uploads/2017/04/image-3-560x560.jpeg 560w, http://example.com/wp-content/uploads/2017/04/image-3.jpeg 1080w" sizes="(max-width: 640px) 100vw, 640px" /> 
    </body> 
</html>'; 

$domObject= new DOMDocument(); 
$domObject->loadHTML($string); 
$results=$domObject->getElementsByTagName("img"); 
foreach($results as $result) 
{ 
    $value=$result->getAttribute("src"); 
    $value=preg_replace("/^\s*(https?:\/\/(?:www\.)?)[a-zA-Z0-9]+\.com/","$1abc.host.prov.com", $value); 
    $result->setAttribute("src",$value); 
} 
print_r($domObject->saveHTML()); 

Lösung 2: Try this code snippet here

<?php 

ini_set('display_errors', 1); 
$string =' 
<html> 
    <body> 
     <img class="aligncenter wp-image-27283 size-large" src="http://example.com/wp-content/uploads/2017/04/image-3-1024x1024.jpeg" alt="homemade chocolate recipe" width="640" height="640" srcset="http://example.com/wp-content/uploads/2017/04/image-3-1024x1024.jpeg 1024w, http://example.com/wp-content/uploads/2017/04/image-3-300x300.jpeg 300w, http://example.com/wp-content/uploads/2017/04/image-3-768x768.jpeg 768w, http://example.com/wp-content/uploads/2017/04/image-3-696x696.jpeg 696w, http://example.com/wp-content/uploads/2017/04/image-3-1068x1068.jpeg 1068w, http://example.com/wp-content/uploads/2017/04/image-3-420x420.jpeg 420w, http://example.com/wp-content/uploads/2017/04/image-3-560x560.jpeg 560w, http://example.com/wp-content/uploads/2017/04/image-3.jpeg 1080w" sizes="(max-width: 640px) 100vw, 640px" /> 
    </body> 
</html>'; 
$domObject= new DOMDocument(); 
$domObject->loadHTML($string); 
$domXpath= new DOMXPath($domObject); 
$results=$domXpath->query("//img"); 
foreach($results as $result) 
{ 
    $value=$result->getAttribute("src"); 
    $value=preg_replace("/^\s*(https?:\/\/(?:www\.)?)[a-zA-Z0-9]+\.com/","$1abc.host.prov.com", $value); 
    $result->setAttribute("src",$value); 
} 
print_r($domObject->saveHTML()); 
+0

Ja, aber in diesem Fall, dass Sie nicht wirklich brauchen, XPath zu verwenden, da '$ results = $ domObject-> getElementsByTagName ("img"); 'erzeugt dieselbe DOMNodeList. Mit XPath können Sie jedoch direkt auf das src-Attribut zielen: '$ results = $ domXpath-> query (" // img/@ src ");' –

+0

Ich denke, das ist falsch '$ results = $ domObject-> getElementsByTagName (" src ");' sollte es sein "$ results = $ domObject-> getElementsByTagName (" img ");' @CasimiretHippolyte ja du hast Recht, wir können es auch so verwenden –

+0

Es war ein Tippfehler, jetzt korrigiert. –

Verwandte Themen