Re: [請益] preg_match_all 抓有變數的中文句子

看板PHP作者 (亞修)時間15年前 (2010/11/17 18:54), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《juan19283746 (小阮)》之銘言: : 我現在要從一個變數(裡面存一段中文句子) : 想要抓出含有一個變數的短句子 : 也就是把在兩個句號(全形)中含有變數的句子都抓出來 : 想請問我以下的正規表示式寫法哪裡有錯 : "/([^。])*$tmp([^。])*(。)/" 沒抓到任何東西 : "/(.+?)$tmp(.+?)(。)/" 有抓到 可是會抓到整段(沒過濾句點) : "/([^。]+?)$tmp(.+?)(。)/" 比較接近我要的結果 : 可是抓出來最前面好像少了一個字元 : 想請問上面的要怎麼改 : 或者有其他的好方法 : 謝謝 因為妳沒有提供範例的句子,所以我只好自己猜測妳大概的字串樣式... 我寫了幾種測試的句子妳看一下是否符合你的需求 程式: ===================================================================================== echo '1. '.strmatch('。今天天氣很好。')."\n"; echo '2. '.strmatch('。今天天氣很好。今天$tmp很好。今天天氣很好')."\n"; echo '3. '.strmatch('今天$tmp很好。')."\n"; echo '4. '.strmatch('。今天$tmp很好。')."\n"; echo '5. '.strmatch('。$tmp。')."\n"; echo '6. '.strmatch('。今天$tmp很好')."\n"; echo '7. '.strmatch('。今天$abc123很好。')."\n"; echo '8. '.strmatch('。今天$$很好。')."\n"; function strmatch($str){ if(preg_match_all('/。([^\$\。]*\$[\w]+[^\。]+)。/', $str, $matches)){ return $matches[1][0]; }else{ return 'No Match'; } } ===================================================================================== 結果: 1. No Match 2. 今天$tmp很好 3. No Match 4. 今天$tmp很好 6. $tmp 7. No Match 8. 今天$abc123很好 9. No Match -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.24.194.237
文章代碼(AID): #1CuxHE3n (PHP)
文章代碼(AID): #1CuxHE3n (PHP)