首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

一个正则表达式的写法,该如何解决

2012-03-09 
一个正则表达式的写法$str[moviehttp://a.com/a.X]//X格式为除了.mp3和.wmv以外的任何字符串$ptn/\

一个正则表达式的写法
$str='[movie=http://a.com/a.X]'; //X格式为除了.mp3和.wmv以外的任何字符串
$ptn="/\[movie\=.*\.[^(mp3|wmv)]\]/i";
$str=preg_replace($ptn,'x',$str);
echo $str;
怎么不对啊

[解决办法]
你没有理解正则里中括号[]的含义,[]里所有的东西匹配的时候只“消耗”单个字符。
除xxx之外的需求一般用“否定前瞻”(negative lookahead) 来实现。
[解决办法]
$str='[movie=http://a.com/a.mp3]';
$ptn="/\[movie\=.*\.[^(mp3|wmv)]+\]/i"; 

if(preg_match($ptn,$str)) {
echo 'Y';
} else {
echo 'N';
}
[解决办法]

PHP code
<?php$str='[movie=http://a.com/a.mp3]';           //X格式为除了.mp3和.wmv以外的任何字符串$ptn="/\[movie\=.*(?<!mp3|wmv)]$/";$str=preg_replace($ptn,'x',$str);echo   $str; ?>
[解决办法]
PHP code
<?php$str='[movie=http://a.com/a.mp3]';//$str='[movie=http://a.com/a.mp]';$ptn="/\[movie\=(?>.*\.)(?:(?!mp3|wmv).+)\]/";if(preg_match($ptn,$str,$g))   { echo   'Y'; print_r($g);}   else   { echo   'N';}?> 

热点排行