Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php preg_replace regex需要正斜杠打开和关闭?_Php_Regex_Preg Replace - Fatal编程技术网

Php preg_replace regex需要正斜杠打开和关闭?

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 "

我正在努力学习正则表达式。我通过检查一个电子邮件帐户来测试自己。但问题是它出现了一个错误:

在第8行的/www/eh11522/public_html/scclib/demo/regex.php中找不到结尾分隔符“^”

这是我的密码:

<?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;