正则表达式*的问题
益伦
益伦 2017-11-18 09:49:36
0
8
1506

<?php

$zz = '/奥迪*/';

$string = "奥迪奥迪迪2500都是我最爱";

if(preg_match($zz, $string, $matches)){

   echo '匹配到了,结果为:';

   var_dump($matches);

}else{

   echo '没有匹配到';

}

?>

为什么输出结果是‘奥迪’,而不是‘奥迪奥迪’或者‘奥迪迪’,*不是最少0次吗,有两次情况下怎么没全部提取出来

益伦
益伦

全部回复(2)
又白又帅又可爱

使用preg_match应该匹配到“奥迪”,使用preg_match_all应该匹配到“奥迪奥迪迪”,

这是理论结果,可实际上正则匹配中文的例子我还没有见到过,正则只能检查是不是中文和限制长度,而且是用的中文的字节码,类似这种:u4e00-u9fa5

  • 回复 好吧,试了一下中文确实很多不行,我以后再少用中文做例子
    益伦 作者 2017-11-20 23:17:33
路过

preg_match 只匹配一个

preg_match_all 才是全部匹配结果

建议去查查手册

  • 回复 &lt;?php $zz = '/250*/'; $string = "迪奥和奥迪25000都是我最爱"; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?&gt; 越来越乱了,那这代码结果为什么是25000呢,而不是你说得250?
    益伦 作者 2017-11-18 11:01:48
  • 回复 匹配它前面一个字符任意遍(0或任意次)
    益伦 作者 2017-11-18 11:08:10
  • 回复 好吧,谢谢你愿意解答
    益伦 作者 2017-11-20 23:12:45
  • 回复 你知道 * 的意思吗?
    路过 作者 2017-11-18 11:03:33
  • 回复 看手册去吧
    路过 作者 2017-11-18 11:39:39
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!