preg_match问题
$table="s_dw_xxdf_aw_aaas";
preg_match('/rpt_|ods_|dw_|/i', $table, $arr);
print_r($arr);
但是为嘛打印出来的数组是
(
[0] =>
)
回复讨论(解决方案)
//正则表达式中没有最后的 | ,楼主的正则表达式匹配的是一个空字符串preg_match('/rpt_|ods_|dw_/i', $table, $arr);var_dump($arr);//array(1) { [0]=> string(3) "dw_" }
$arr=array();
$table="ods_sdw_xxrpt_df_aw_aaas";
preg_match_all('/rpt_|ods_|dw_/i', $table, $arr);
print_r($arr);//Array ( [0] => Array ( [0] => ods_ [1] => dw_ [2] => rpt_ ) )
preg_match 进行正则表达式匹配,只匹配一次,返回1,否则0,
格式:preg_match("正则表达式","被匹配的字串",存放结果的变量名,PREG_OFFSET_CAPTURE,起始偏移量)
其中:PREG_OFFSET_CAPTURE表示获取匹配索引位置
起始偏移量:从指定位置开始匹配
preg_match_all -- 进行全局正则表达式匹配 , 返回共计匹配的个数。和上面的一样,不同的是匹配到最后。
亲,您都没有定义数组
学习了,我是这么理解的:
preg_match()进行匹配每匹配到一个值放入到数组元素中,但是键值不会更改,所以覆盖,显示的始终是最后一个数组元素。
preg_match_all()进行匹配每匹配到一个值放入到数组元素中,但是键值会自增,即所谓的偏移,所以结果都记录了下来。
就像mysql_fetch_array()函数一样。
PHP code?123//正则表达式中没有最后的 | ,楼主的正则表达式匹配的是一个空字符串preg_match('/rpt_|ods_|dw_/i', $table, $arr);var_dump($arr);//array(1) { [0]=> string(3) "dw_" }
确实,我多加了一个|,去掉就好了
preg_match 进行正则表达式匹配,只匹配一次,返回1,否则0,
格式:preg_match("正则表达式","被匹配的字串",存放结果的变量名,PREG_OFFSET_CAPTURE,起始偏移量)
其中:PREG_OFFSET_CAPTURE表示获取匹配索引位置
起始偏移量:从指定位置开始匹配
preg_match_all -- ……
是的,谢谢啦
推荐阅读
-
怎么解决MySQL密码问题
-
解决linux系统中运行node进程却无法杀死进程的问题
-
使用nginx代理gogs遇到推送代码错误的问题(RPC failed; HTTP 413 curl 22 The requested URL returned error: 413)
-
来探讨一下最近面试问的ThreadLocal问题
-
c# String扩展 让你在PadLeft和PadRight时不再受单双字节问题困扰
-
MFC连接数据库时,无法启动程序,计算机丢失libmysql.dll的问题解决办法
-
记录一下使用sea.js时遇到的几个小问题
-
Android RadioGroup多行显示效果 解决单选问题
-
Android仿微信QQ聊天顶起输入法不顶起标题栏的问题
-
[日常] 跨语言的POST请求问题的解决