preg_replace изменить ссылку с href

Мне нужно заменить URL-адреса на странице, сделанной curl, и добавить правильную ссылку на изображения и ссылки. Мой 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; ?> 

Выход:

 //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://img.ruphp.com/php/sec.png"></a> <link href="./styles.css" type="text/css" /> <script src="http://google.com/./style.js"></script> //fixed HREF path <a href="http://img.ruphp.com/php/sec.png"></a> <link href="http://google.com/./styles.css" type="text/css" /> <script src="http://google.com/./style.js"></script> 

Но когда ссылка «a», она разрезает всю ссылку и оставляет только значение href.

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

Может ли любой орган помочь в его устранении. спасибо

Удалите эту ненужную часть из ваших регулярных выражений: ([^ /] +) /

Это приводит к тому, что ваши регулярные выражения соответствуют всему URL-адресу в следующем теге.

Код:

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

Результат:

 <a href="http://google.com/host.org"><img src="http://img.ruphp.com/php/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> 

Но! Я думаю, что вы действительно хотите, чтобы заменить относительные URL-адреса с абсолютными URL-адресами. Для этого вы можете использовать это регулярное выражение (с этим вы можете пропустить if-check):

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