对preg_replace_callback很不理解,求一一解答
1、官网中的例子参数1“|(\d{2}/\d{2}/)(\d{4})|”,这样也算是正则表达式吗,为什么是以"|"而不是"/"开头,这个表达式是啥意思啊,我把参数next...
1、官网中的例子参数1“|(\d{2}/\d{2}/)(\d{4})|”,这样也算是正则表达式吗,为什么是以"|"而不是"/"开头,这个表达式是啥意思啊,我把参数next_year改成function(){return $matches[1].($matches[2]+1);}却得不到相应的结果?将参数1改成'|(\d{2}/\d{2}/)(\d{4})(\d{2})|',这样不会调用next_year,是因为与字符串text没有匹配成功吗?
2、关于preg_replace函数新版本中并没有被废弃,只是说不能使用/e修饰符,老版中的/e修饰符具体什么作用呢? 展开
2、关于preg_replace函数新版本中并没有被废弃,只是说不能使用/e修饰符,老版中的/e修饰符具体什么作用呢? 展开
1个回答
展开全部
1、|的作用等同于/。
这个表达式的意思是:第一个括号匹配两位数字+/+两位数字+/;第二个括号内匹配的是连续4个 数字,在例子中就是匹配年份。
你把next_year改成 function(){return $matches[1].($matches[2]+1);}不能正确返回,是因为你用错了匿名函数。改为function($matches){return $matches[1].($matches[2]+1);}即可。
参数一改成了|(\d{2}/\d{2}/)(\d{4})(\d{2})| 你这个正则不能匹配例子中的文本。
2、/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)
这个表达式的意思是:第一个括号匹配两位数字+/+两位数字+/;第二个括号内匹配的是连续4个 数字,在例子中就是匹配年份。
你把next_year改成 function(){return $matches[1].($matches[2]+1);}不能正确返回,是因为你用错了匿名函数。改为function($matches){return $matches[1].($matches[2]+1);}即可。
参数一改成了|(\d{2}/\d{2}/)(\d{4})(\d{2})| 你这个正则不能匹配例子中的文本。
2、/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询