ホームページ >バックエンド開発 >PHPチュートリアル >正規表現の書き方と解き方
正規表現の書き方
$str='[movie=http://a.com/a.X]'; //X 形式は .mp3 と .wmv を除く任意の文字列です
$ptn= "/[ movie=.*.[^(mp3|wmv)]]/i";
$str=preg_replace($ptn,'x',$str);
echo $str;
どうしたのですか?
-----解決策---------
あなたは通常のルールを理解していません角括弧 [] の意味は、[] 内のすべてが照合時に 1 文字だけを「消費」するということです。
xxx 以外の要件は、通常、「否定先読み」を使用して実装されます。
------解決策----------------------
$str='[movie=http:/ / a.com/a.mp3]';
$ptn="/[movie=.*.[^(mp3|wmv)]+]/i";
if(preg_match($ ptn) ,$str)) {
echo 'Y';
} else {
echo 'N';
}
------解決策---------
<?php $str='[movie=http://a.com/a.mp3]'; //X 形式は .mp3 と .wmv を除く任意の文字列です $ptn="/[movie=.*(?<!mp3|wmv)]$/"; $str=preg_replace($ptn,'x',$str); エコー $str; ?> <br /><font color='#e78608'>------解決策---------</font><br /><dl class='code'>PHP コード<pre class="brush:php;toolbar:false"> <?php $str='[映画=http://a.com/a.mp3]'; //$str='[movie=http://a.com/a.mp]'; $ptn="/[movie=(?>.*.)(?:(?!mp3|wmv).+)]/"; if(preg_match($ptn,$str,$g)) { エコー「Y」; print_r($g); } それ以外 { エコー「N」; } ?><div class="clear"></div>