【问题标题】:Splitting strings with regular expression in PHP在 PHP 中使用正则表达式拆分字符串
【发布时间】:2014-12-07 22:04:38
【问题描述】:

谁能告诉我为什么我得到的结果和书上的不一样?

这里是代码

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

【问题讨论】:

    标签: php split expression


    【解决方案1】:

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

    请改用preg_split()

    这个用法和split()一样。

    【讨论】:

    • 哦,这本书已经过时了。非常感谢kRiZ。非常感谢您的回答。
    • 很高兴我能帮上忙。另外,用法还是一样的,所以你可以像split()一样使用这个新功能。
    【解决方案2】:

    这本书的错误在于你不应该得到分隔符本身,只有它们之间的“单词”。

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

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

    防止警告。

    我建议你先用@分割,然后再用.分割域名,否则你不知道是foo.bar@example.com还是foo@bar.example.com导致一个

    foo
    bar
    example
    com
    

    结果。

    【讨论】:

    • 谢谢 Hartmut 我会在 php.net 网站上阅读更多关于 preg_split 的信息。非常感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    相关资源
    最近更新 更多