preg_replace():没有结束符合分隔符'>'

时间:2014-03-07 16:18:23

标签: php proxy

我有这段代码来创建一个简单的代理。

<?php
$url = 'http://google.co.uk';
$page = file($url);

foreach ($page as $part){
    $part = preg_replace('<img src=', '<img src='.$url,$part);
    $part = preg_replace('action="', 'action="'.$url,$part);

    echo $part;
}
?>

并收到这些错误。

preg_replace(): No ending matching delimiter '&gt;'

preg_replace(): Delimiter must not be alphanumeric or backslash 

解决...

替换这些行。

$part = preg_replace('/src="/', 'src="' . $url, $part);
$part = preg_replace('/action="/', 'action="' . $url, $part);

2 个答案:

答案 0 :(得分:2)

您需要在模式周围放置delimiters

$part = preg_replace('/src="/', 'src="'.$url,$part);
$part = preg_replace('/action="/', 'action="'.$url,$part);

此外,您可以通过只调用preg_replace来简化此代码,如下所示:

$part = preg_replace('/(src|action)="/', '$0' . $url, $part);

或者像这样:

$part = preg_replace('/(?<=(src|action)=")/', $url, $part);

答案 1 :(得分:1)

preg_replace()将正则表达式作为其第一个参数。在这种情况下,将模式更改为/<img src=/应该可以解决问题。有关详细信息,请参阅http://www.php.net/manual/en/reference.pcre.pattern.syntax.php