我有这段代码来创建一个简单的代理。
<?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 '>'
和
preg_replace(): Delimiter must not be alphanumeric or backslash
替换这些行。
$part = preg_replace('/src="/', 'src="' . $url, $part);
$part = preg_replace('/action="/', 'action="' . $url, $part);
答案 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