2012-02-27 7 views
2

やあみんな、私はそれ が私の表現に存在する場合、最後の_1.jpgを取り除くしようとしているが、私はpreg_match lazy?

シナリオは次のようないくつかの問題を抱えています。

image_name_1.jpg (should be image_name.jpg)

image_name_1_1.jpg (should be image_name_1.jpg)

私はこの思い付いた、それは

$pic = ($pic[strlen]-6 == '_') ? preg_replace('/*.\_[0-9]/', '.jpg', $pic) : $pic;

私の式の何が問題なのですnullを返しているように見えますか?助けてもらえますか?

+0

"_1.jpg"を ".jpg" – hackartist

+0

に置き換えるにはstr_replaceを一度使用します。その_2、_4、または_9が単一の整数に限定されていない場合はどうなるでしょうか?[0-9] – ehime

答えて

2

これはそれを行う必要があります。

preg_replace('/_\d\.jpg$/', '.jpg', $pic); 
1

*.は、ここでは困ります。 *.? - ?の平均遅延尺度を使用できます。

しかし、あなたの表現は、入力文字列全体をパターン化することはできません。対象は、ohaalの答えを参照してください。

+0

1歳以上の質問=) – ehime