preg_replace değişim img ve bağlantı yolları proxy kullanmak için

4 Cevap php

Ben başa çıkmak için sert bir sorun haline çalıştırmak. Bu gibi benim önerileri sığdırmak için bir-etiketleri ve img etiketleri yerine duyuyorum. Şimdiye kadar iyi.

$search = array('|(<a\s*[^>]*href=[\'"]?)|', '|(<img\s*[^>]*src=[\'"]?)|');
$replace = array('\1proxy2.php?url=', '\1'.$url.'/');
$new_content = preg_replace($search, $replace, $content);

Şimdi benim sorunum ben bu içeriği bu gibi görünüyor getirme sayfalarda bağlantılar vardır ki:

<a href="/test/page/">

ve

<a href="http://google.se/test/">

And when after replacing these two links looks like this:

<a href="proxy2.php?url=/test/page/">

ve

<a href="proxy2.php?url=http://google.se/test/">

The problem is for me is that i want to include a variable named $url before /test/page/ ve only on that links that are like that, not those who was already http:// or https:// before.

4 Cevap

Bu çapa etiketleri için iş yapmak, en azından olmalıdır:

<?php
function prepend_proxy($matches) {
    $url = 'http://example.prefix';

    $prepend = $matches[2] ? $matches[2] : $url;
    $prepend = 'proxy2.php?url='. $prepend;

    return $matches[1] . $prepend . $matches[3];
}
$new_content = preg_replace_callback(
    '|(href=[\'"]?)(https?://)?([^\'"\s]+[\'"]?)|i',
    'prepend_proxy',
    $content
);
?>

Sadece proxy2.php biraz akıllı olun. Tam URL (http:// ...) gelirse, o yönlendirmek. Yerel bir URL (örneğin / test / sayfa /) gelirse, eksik ne düşmesi (örneğin, http://www.mylittleapp.com/test/page/) ve yönlendirme.

Bu hile yapmak

$search = array('@(<a\s*[^>]*href=[\'"]?)(https?://)?@');
$replace = array('\1proxy2.php?url=');
$new_content = preg_replace($search, $replace, $content);

Sonuç:

<a href="proxy2.php?url=/test/page/">
<a href="proxy2.php?url=google.se/test/">

Sara benim. Scronide, sizin kod çalışmak istememiştim. Hala döndürür:

<a href="proxy2.php?url=/test/page/">
<a href="proxy2.php?url=google.se/test/">

Bunun yerine i göstermek istedim ne, ben url prepended ile, bu gibi göstermek istedim:

<a href="proxy2.php?url=**THEURLHERE.COM**/test/page/">
<a href="proxy2.php?url=google.se/test/">

ÜZGÜNÜM, IT I URL variabel İLE yanlış bir şey yaptığını, çalışma yaptı. U SCRONIDE EDERİZ!