Phpmailer弃用eregi到preg_match转换?

时间:2010-12-23 21:21:31

标签: php preg-match phpmailer eregi

我做了研究,转换为不使用已弃用的代码看起来很直接,但我对正则表达式的经验有限,我不太清楚这个问题的解决方案是什么。

这是原始行:

if(eregi('^(.+):([0-9]+)$', $hosts[$index], $hostinfo)) {

在5.3.0中弃用了

所以我替换为:

if(preg_match('^(.+):([0-9]+)$/i', $hosts[$index], $hostinfo)) {

现在我明白了:

  

在...中找不到结尾分隔符'^'

我正在阅读的所有内容都表明我需要一个^和一个/来分隔我的功能。有什么想法吗?

2 个答案:

答案 0 :(得分:5)

整个字符串需要包装在/ / try:

if(preg_match('/^(.+):([0-9]+)$/i', $hosts[$index], $hostinfo)) {

答案 1 :(得分:3)

PHP要求您为正则表达式添加分隔符,一个用于开始,一个用于结束。这可以是任何字符,但如果它出现在正则表达式中,则必须使用'\'进行转义。尝试在正则表达式的开头添加“/”,如下所示:

if(preg_match('/^(.+):([0-9]+)$/i', $hosts[$index], $hostinfo))

一个小更新:最后的'i'是一个模式修饰符,使匹配大小写不敏感。