Мне нужно заменить URL-адреса на странице, сделанной curl, и добавить правильную ссылку на изображения и ссылки. Мой php curl-код:
<?php function getPage($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); $result = curl_exec($ch); curl_close($ch); if (!preg_match('/src="https?:\/\/"/', $result)) $result = preg_replace('/src="(.*)"/', "src=\"http://support.prophpbb.com/\\1\"", $result); if (!preg_match('/href="https?:\/\/"/', $result)) $result = preg_replace('/href="(.*)"/', "href=\"http://support.prophpbb.com/\\1\"", $result); return $result; } $result = getPage('http://support.prophpbb.com/'); print_r ($result); ?>
Этот код работает нормально для некоторых ссылок, но для правильных ссылок он делает дубликат.
Из неправильной ссылки заменяется на правильную:
<img src="./uploads/support/images/1355955233.png" alt="" title="" /> <img src="http://img.ruphp.com/php/1355955233.png" alt="" title="" />
Но правильные ссылки, заменены неправильно:
<img src="http://img.ruphp.com/php/icon_mini_faq.gif" width="12" height="13" alt="*" /> <img src="http://support.prophpbb.com/http://img.ruphp.com/php/icon_mini_faq.gif" width="12" height="13" alt="*" />
Может ли кто-нибудь помочь мне, пожалуйста?
Попробуйте это регулярное выражение в preg_replace
<?php function getPage($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); $result = curl_exec($ch); curl_close($ch); if (!preg_match('/src="https?:\/\/"/', $result)) { $result = preg_replace('/src="(http:\/\/([^\/]+)\/)?([^"]+)"/', "src=\"http://support.prophpbb.com/\\3\"", $result); } if (!preg_match('/href="https?:\/\/"/', $result)) { $result = preg_replace('/href="(http:\/\/([^\/]+)\/)?([^"]+)"/', "href=\"http://support.prophpbb.com/\\3\"", $result); } return $result; } $result = getPage('http://support.prophpbb.com/'); print_r ($result);