将结束分隔符放在正则表达式中的位置?

时间:2011-12-25 08:58:29

标签: php regex

我在正则表达式上非常可怕!你能告诉我在这段代码中把结尾分隔符放在哪里吗?

$data = preg_replace("/ href=\"\/i", " href=\"{$domain}/", $data);
$data = preg_replace("/ src=\"\/i", " href=\"{$domain}/", $data);

1 个答案:

答案 0 :(得分:1)

语法如下:

preg_replace("/PATTERN/FLAGS", "Replace String", $subject);

正如您所看到的,分隔符围绕模式,因此在您的情况下,您的分隔符已到位。

但是,您还在替换字符串参数中放置了分隔符,您不应该使用该分隔符。您还需要转义反斜杠\之类的字符。所以正确的形式是:

$data = preg_replace("/ href=\"\\/i", " href=\"{$domain}\\", $data);
$data = preg_replace("/ src=\"\\/i", " href=\"{$domain}\\", $data);

该代码会将href="\的任何实例替换为href="DOMAIN\

但是,对于特定的替换件,RegEx不是必需的。您可以使用简单的str_replace()

$data = str_replace('href="\\', "href=\"{$domain}\\", $data);
$data = str_replace('src="\\', "src=\"{$domain}\\", $data);