電子書籍の厳選無料作品が豊富!

プログラム初心者です

番号と画像拡張子を簡単な正規表現で表す方法をおしえてください

拡張子はgif、png、jpgの拡張子です

番号は桁数も番号も変わります。この三パターンにマッチするテキストを置き換えたいです


56.gif
100.gif

6.png
6549.png

79169.jpg
35.jpg




$pattern="/(\d+)/";
$replacement="<a href=\"$0\">$0</a>";

if(preg_match($pattern,$mes,$matches) ){
$mes=preg_replace($pattern,$replacement,$mes);
}


よろしくお願いします

A 回答 (3件)

1つの文字列中にまとめて存在しているならば



$pattern = '/\b\d++\.(?:png|gif|jpe?+g)\b/i';

それぞれが別の文字列として独立しているならば

$pattern = '/\A\d++\.(?:png|gif|jpe?+g)\z/i';

として、

$mes = preg_replace($pattern, '<a href="$0">$0</a>', $mes);

で動作します。preg_matchを行う必要はありません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます
ばっちり動きました!さすがです

お礼日時:2014/02/20 23:59

微妙にずれている気がしますが、こんな感じで?



<?PHP
$mes=<<<EOF
xxx56.gifxxx100.gifxxxx
6.png
yyy123.bmpyyy6549.pngyyy
79169.jpg
zzz35.jpgzzz
EOF;
print nl2br(htmlspecialchars($mes));
print "<hr>";
$pattern = "/\d+.(?:png|gif|jpg)/mis";
$replacement="<a href=\"$0\">$0</a>";
$mes=preg_replace($pattern,$replacement,$mes);

print nl2br(htmlspecialchars($mes));
    • good
    • 0
この回答へのお礼

回答ありがとうございます
こちらも、ばっちり動きました!感謝いたします

お礼日時:2014/02/21 00:00

英字+数字+拡張子の場合どこまでヒットさせるかなど


もう少し仕様を詰めた方がいいですね

たとえば「xxx1.jpg」は「1.jpg」をヒットさせるのか、
それともヒットさせないのか
    • good
    • 0
この回答へのお礼

回答ありがとうございます
1.jpgはヒットさせる予定です
数字+拡張子なので
1.jpg、11.jpg、111.jpgなど桁数も変わってしまいます。番号も変わります
拡張子は3つのみです

お礼日時:2014/02/20 18:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!