我做了研究,转换为不使用已弃用的代码看起来很直接,但我对正则表达式的经验有限,我不太清楚这个问题的解决方案是什么。
这是原始行:
if(eregi('^(.+):([0-9]+)$', $hosts[$index], $hostinfo)) {
在5.3.0中弃用了
所以我替换为:
if(preg_match('^(.+):([0-9]+)$/i', $hosts[$index], $hostinfo)) {
现在我明白了:
在...中找不到结尾分隔符'^'
我正在阅读的所有内容都表明我需要一个^和一个/来分隔我的功能。有什么想法吗?
答案 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'是一个模式修饰符,使匹配大小写不敏感。