2011-07-13 49 views
5

我有很多的字符串,我需要在字符串的開始刪除「0」,但什麼是更好的方式來做到這一點,因爲這是一個字符串的例子:如何將字符刪除到一個字符串?

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

現在,我使用substr函數,但我認爲如果我使用Regex否更有效率?

+0

作爲一個正則表達式超過另一種方法的效率見: http://stackoverflow.com/questions/3303355/substring-match-faster-with-regular-expression –

回答

11

只是類型強制轉換一定會做到有效

echo (int) $var; 
+0

1爲好的解決方案它開箱即用。 –

+0

確實很簡單!非常感謝 ! – bahamut100

3

如果格式的所有字符串([數字] .JPG)一樣,你可以這樣做:

intval('0130799.jpg', 10); 

intval() in Manual

+0

這對我來說可以!謝謝 ! – bahamut100

0

如果使用substr,則必須將其與strpos結合使用,因爲substr需要知道字符串索引。

是的,你最好用正則表達式。

如果你的問題是如何從字符串中提取00000ddddddd.jpg(對於一些數量的零和非零數字)的字符串中的任何地方數字,那麼你應該使用的preg_match。

下面是一個完整的例子,你可以在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]}"; 

嘗試如果整個字符串是一個文件名,然後使用intval或鑄塑在其他答案建議。

+0

這種方式對於「000AA00」字符串可以嗎? 「AA00」結果? – bahamut100

+0

糟糕!接得好。我編輯我的答案,以便它不會選擇前導零。非常抱歉。 –

0

用正則表達式,你可以做

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

^是字符串(在這裏與m修改行的開始)

0+意味着1個或多個零的開始。

這個正則表達式將匹配所有前導零並替換爲一個空字符串。

查看它here on Regexr

+0

正如Ray Toal所說:這種方式對於「000AA00」字符串可以嗎? 「AA00」結果? – bahamut100

+0

@ bahamut100我添加了一個鏈接到正則表達式測試工具,你可以看到它。是的,它也將從「000AA00」中刪除前導0,這是你想要的嗎? – stema

相關問題