2011-07-13 25 views
5

私は、文字列の多くを持っている、と私は削除する必要が「0」の文字列の先頭で、これは文字列の一例であるので、それを行うには良い方法です:文字列に文字を取り除く方法は?

0130799.jpg //I need to get 130799 
0025460.jpg //I need to get 25460 

、私は'mはsubstr関数を使用していますが、Regexを使用しないと効率が良いと思いますか?

+0

here on Regexr別の方法に比べて正規表現の効率に関して参照ください: http://stackoverflow.com/questions/3303355/substring-match-faster-with-regular-expression –

答えて

11

ただキャストが形式はすべての文字列([番号]の.jpg)で同じである場合は、あなたが行うことができ、効率的

echo (int) $var; 
+0

+1のための素晴らしい解決策。その箱から。 –

+0

確かに、それは簡単でした!どうもありがとうございます ! – bahamut100

3

それを行います入力します。

intval('0130799.jpg', 10); 

intval() in Manual

+0

それは私のために大丈夫です!ありがとう! – bahamut100

0

substrを使用する場合は、substrが文字列インデックスを認識する必要があるため、strposと組み合わせて使用​​する必要があります。

はい、正規表現を使う方が良いです。

あなたの質問は、(ゼロと非ゼロの数字をいくつかのために)どこでも文字列内の文字列00000ddddddd.jpgから数字を抽出する方法であれば、あなたがするpreg_matchを使用する必要があります。

はここで文字列全体がファイル名である場合は、intvalを使用したり、他の回答で提案されているようにキャストし、その後、http://writecodeonline.com/php/

preg_match('/([1-9][0-9]+)\.jpg/', "I have a file called 0000482080.jpg somewhere", $matches); 
echo "I like to call it: {$matches[0]}"; 

に試すことができます完全な例です。あなただけ

preg_replace('/^0+/m','',$sourcestring); 

^を行うことができ、正規表現で

+0

この方法で "000AA00"文字列はOKですか?結果は "AA00"ですか? – bahamut100

+0

おっと!良いキャッチ。私は先行ゼロを拾わないように私の答えを編集しました。ごめんなさい。 –

0

は、文字列の先頭である(ここではmと行の開始をモディファイ)

0+ 1つの以上のゼロを意味します。

この正規表現はすべての先行ゼロと一致し、空の文字列で置き換えられます。

それは

+0

Ray Toalの答えはこうです: "000AA00"の文字列はこの方法で問題ありませんか?結果は "AA00"ですか? – bahamut100

+0

@ bahamut100正規表現のテストツールへのリンクを追加しました。はい、それはまた、 "000AA00"から先頭の0を削除します、これはあなたが欲しいですか? – stema

関連する問題