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


Where to put the ending delimiter in a Regex ?

我很不擅长正则表达式!你们能告诉我在这段代码中结束分隔符应该放在哪里吗?

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

语法如下:

preg_replace("/PATTERN/FLAGS", "Replace String", $subject);
如您所见,分隔符在模式周围,因此在您的示例中,分隔符已就位。但是,您还在replace string参数中放置了分隔符,这是不应该的。您还需要转义字符,如反斜杠'。所以正确的格式是:
$data = preg_replace("/ href='"''/i", " href='"{$domain}''", $data);
$data = preg_replace("/ src='"''/i", " href='"{$domain}''", $data);

该代码将用href="DOMAIN'替换href="'的任何实例。

然而,对于特定的替换部分,RegEx不是必需的。您可以使用简单的str_replace():
$data = str_replace('href="''', "href='"{$domain}''", $data);
$data = str_replace('src="''', "src='"{$domain}''", $data);