Heim  >  Artikel  >  Backend-Entwicklung  >  preg_match问题

preg_match问题

WBOY
WBOYOriginal
2016-06-23 14:06:401205Durchsuche

想看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_" } 

$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()函数一样。

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn