preg_replace cambia link da href

Ho bisogno di sostituire gli URL nella pagina presa da arricciatura e aggiungere il link corretto a immagini e collegamenti. Il mio codice di php curl è:

<?php $result = '<a href="http://host.org"><img src="./sec.png"></a> <link href="./styles.css" rel="alternate stylesheet" type="text/css" /> <script type="text/javascript" src="./style.js"></script>'; echo $result; if (!preg_match('/src="https?:\/\/"/', $result)) { $result = preg_replace('/src="(http:\/\/([^\/]+)\/)?([^"]+)"/', "src=\"http://google.com/\\3\"", $result); } echo $result; if (!preg_match('/href="https?:\/\/"/', $result)) { $result = preg_replace('/href="(http:\/\/([^\/]+)\/)?([^"]+)"/', "href=\"http://google.com/\\3\"", $result); } echo $result; ?> 

L'output è:

 //original links <a href="http://host.org"><img src="./sec.png"></a> <link href="./styles.css" type="text/css" /> <script src="./style.js"></script><br /> //fixed SRC path <a href="http://host.org"><img src="http://google.com/./sec.png"></a> <link href="./styles.css" type="text/css" /> <script src="http://google.com/./style.js"></script> //fixed HREF path <a href="http://google.com//google.com/./sec.png"></a> <link href="http://google.com/./styles.css" type="text/css" /> <script src="http://google.com/./style.js"></script> 

Ma quando il link è "a" taglia tutto il link e lascia solo il valore href.

 //from <a href="http://host.org"><img src="./sec.png"></a> //to src fix: <a href="http://host.org"><img src="http://google.com/./sec.png"></a> //ERRRROR when href fix make : <a href="http://google.com//google.com/.sec.png"></a> 

Qualsiasi organismo può aiutarti a risolverlo. Grazie

Rimuovi questa parte non necessaria dalle tue espressioni regolari: ([^ /] +) /

Fa sì che le tue espressioni regolari corrispondano fino all'URL nel tag successivo.

Codice:

 $result = preg_replace('/src="(http:\/\/)?([^"]+)"/', "src=\"http://google.com/\\2\"", $result); $result = preg_replace('/href="(http:\/\/)?([^"]+)"/', "href=\"http://google.com/\\2\"", $result); 

Risultato:

 <a href="http://google.com/host.org"><img src="http://google.com/./sec.png"></a> <link href="http://google.com/./styles.css" rel="alternate stylesheet" type="text/css" /> <script type="text/javascript" src="http://google.com/./style.js"></script> 

Ma! Penso che quello che vuoi veramente sia un modo per sostituire gli url relativi con URL assoluti. Per questo è ansible utilizzare queste espressioni regolari (con questo è ansible saltare gli if-checks):

 $result = preg_replace('/src="(?!http:\/\/)([^"]+)"/', "src=\"http://google.com/\\1\"", $result); $result = preg_replace('/href="(?!http:\/\/)([^"]+)"/', "href=\"http://google.com/\\1\"", $result);