首頁  >  問答  >  主體

正規表示式*的問題

<?php

$zz = '/Audi*/';

$string = "奧迪奧迪迪2500都是我最愛";

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

   echo '配對到了,結果為: ';

   var_dump($matches);

}else{

   echo '沒有符合到';

#}

? >

為什麼輸出結果是'奧迪',而不是'奧迪奧迪'或'奧迪迪',*不是最少0次嗎,有兩次情況下怎麼沒全部提取出來

益伦益伦2499 天前1463

全部回覆(8)我來回復

  • 又白又帅又可爱

    又白又帅又可爱2017-11-20 12:15:33

    使用preg_match應該匹配到“奧迪”,使用preg_match_all應該匹配到“奧迪奧迪迪”,

    這是理論結果,可實際上正則匹配中文的例子我還沒有見過,正則只能檢查是不是中文和限制長度,而且是用的中文的字節碼,類似這種:u4e00-u9fa5

    回覆
    0
  • 益伦

    好吧,試了一下中文確實很多不行,我以後再少用中文做例子

    益伦 · 2017-11-20 23:17:33
  • 路过

    路过2017-11-18 10:27:36

    preg_match 只符合一個

    preg_match_all 是全部符合結果

    建議去查查手冊

    回覆
    0
  • 益伦

    <?php $zz = '/250*/'; $string = "迪奧和奧迪25000都是我最愛"; if(preg_match($zz, $string, $matches)){ echo '匹配到了,結果為:'; var_dump($matches); }else{ echo '沒有匹配到'; } ?> 越來越亂了,那這程式碼結果為什麼是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
  • 取消回覆