作者guardlan (亚修)
看板PHP
标题Re: [请益] preg_match_all 抓有变数的中文句子
时间Wed Nov 17 18:54:03 2010
※ 引述《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