在PHP中使用正则表达式拆分字符串

时间:2014-12-07 22:04:39

标签: php split expression

有人可以告诉我为什么我得到的结果与书有所不同吗?

这是代码

<?php
$address = "username@example.com";
$arr = split ("\.|@", $address);
while (list($key, $value) = each($arr))
{
    echo "<br/>".$value;
}
?>

这是本书说你应该得到的结果

username
@
example
.
com

以下是我在计算机上试用代码时的结果

Deprecated: Function split() is deprecated in C:\Apache24\htdocs\test3.php on line 3

username
example
com

2 个答案:

答案 0 :(得分:0)

自PHP 5.3.0起,split()函数已被弃用。

改为使用preg_split()

此用法与split()相同。

答案 1 :(得分:0)

这本书是错误的,因为你不应该自己得到分隔符,只有&#39;单词&#39;他们之间。

警告是由于split()即将停止使用preg_split(),因此您应该将其替换为

$arr = preg_split ('/\.|@/', $address);

以防止警告。

我建议您先排除@,然后再按.拆分域名,否则您无法知道foo.bar@example.comfoo@bar.example.com导致

foo
bar
example
com

结果。