2

対処するのが難しい問題に遭遇しました。このような私の提案に合うように、a-tags と img-tags を置き換えています。ここまでは順調ですね。

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

今私の問題は、次のようなコンテンツを取得するページにリンクがあることです:

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

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

これら 2 つのリンクを置き換えると、次のようになります。

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

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

私にとっての問題は、 /test/page/ の前に $url という名前の変数を含め、そのようなリンクにのみ含めたいことです。以前は既に http:// または https:// だった人ではありません。

4

4 に答える 4

2

これは、少なくともアンカータグの仕事をするはずです:

<?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
);
?>
于 2009-08-10T06:37:42.393 に答える
0

これはトリックを行います

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

結果:

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

于 2009-08-09T19:57:53.600 に答える
0

proxy2.php をもう少し賢くするだけです。完全修飾 URL ( http://.. ) が入ってきた場合は、それにリダイレクトします。ローカル URL (例: /test/page/) が入ってきたら、足りないもの (例: http://www.mylittleapp.com/test/page/ ) をドロップしてリダイレクトします。

于 2009-08-09T20:07:55.420 に答える
0

私はサラです。Scronide、あなたのコードは機能しませんでした。それでも返されます:

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

表示したいものの代わりに、次のように表示したかったのですが、先頭に URL を追加しました。

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

申し訳ありませんが、うまくいきました。URL VARIABEL で間違ったことをしていました。ありがとうございます!

于 2009-08-10T12:55:36.850 に答える