Home > Backend Development > PHP Tutorial > preg_match问题

preg_match问题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-23 14:06:40
Original
1246 people have browsed it

想看table字符串中是否有“rpt_”或者“ods_”或者“dw_”,如果有,则把这个匹配到的字符串截取出来放到一个数组中,我是这么来做的
$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_" } 
Copy after login

$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 -- 进行全局正则表达式匹配 , 返回共计匹配的个数。和上面的一样,不同的是匹配到最后。

亲,您都没有定义数组

学习了,我是这么理解的:<br/>preg_match()进行匹配每匹配到一个值放入到数组元素中,但是键值不会更改,所以覆盖,显示的始终是最后一个数组元素。<br/>preg_match_all()进行匹配每匹配到一个值放入到数组元素中,但是键值会自增,即所谓的偏移,所以结果都记录了下来。<br/>就像mysql_fetch_array()函数一样。
Copy after login

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 -- ……
是的,谢谢啦

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template