Php preg_replace regex需要正斜杠打开和关闭?
我正在努力学习正则表达式。我通过检查一个电子邮件帐户来测试自己。但问题是它出现了一个错误: 在第8行的/www/eh11522/public_html/scclib/demo/regex.php中找不到结尾分隔符“^” 这是我的密码:Php preg_replace regex需要正斜杠打开和关闭?,php,regex,preg-replace,Php,Regex,Preg Replace,我正在努力学习正则表达式。我通过检查一个电子邮件帐户来测试自己。但问题是它出现了一个错误: 在第8行的/www/eh11522/public_html/scclib/demo/regex.php中找不到结尾分隔符“^” 这是我的密码: <?php $pattern = "^([\w.]+)@w([\w.]+).([\w.]+)"; $email = "tyler@surazinet"; if (!preg_replace($pattern, '', $subject)) { echo "
<?php
$pattern = "^([\w.]+)@w([\w.]+).([\w.]+)";
$email = "tyler@surazinet";
if (!preg_replace($pattern, '', $subject)) {
echo "worked";
} else {
echo "failed";
}
?>
我发现如果我在模式前后加一个斜杠就行了,但我不太明白它的作用,这与我想要的不太匹配。斜杠是分隔符,需要更改
$pattern = "^([\w.]+)@w([\w.]+).([\w.]+)";
到
会解决你的问题。您需要为正则表达式指定一个分隔符。在本例中,我使用了
/
,但是有很多。在PHP中使用正则表达式时,您的分隔符不必是PHP中的斜杠,但您确实需要告诉函数正则表达式的开始和结束位置。斜杠(“/”)和散列符号(#
)都是流行的替代符号;我通常更喜欢后者,因为它允许我在解析URL时马虎
$pattern = "#^([\w.]+)@w([\w.]+).([\w.]+)#";
斜杠是一个“掩蔽字符”,用来告诉
preg_replace()
正则表达式的开头和结尾是什么。例如,您可以在正则表达式的末尾(即第二个掩蔽字符之后)放置几个标志,使其不区分大小写 正斜杠是正则表达式分隔符。您还可以使用其他字符作为分隔符,例如{pattern}
,#pattern}
。它们在某种程度上是其他语言(如perl)的延续,在perl中,您不需要将正则表达式括在引号中,例如:
“苹果梨橙子”=~/梨/
它们还用于分隔正则表达式的各个部分。对于exmaple,当您需要案例交互或替换某些字符时:/pattern/replace/flags
//This perl code will replace Earth, earth, eArth... with zeus
"Earth, mars, mercury, pluto" =~ s/earth/zeus/i;
可能重复的
//This perl code will replace Earth, earth, eArth... with zeus
"Earth, mars, mercury, pluto" =~ s/earth/zeus/i;