Re: [請益] preg_match_all 抓有變數的中文句子
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 4 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章