2011-07-13 40 views
5

tôi có rất nhiều các chuỗi, và tôi cần phải xoá '0' ở đầu chuỗi, nhưng những gì là cách tốt hơn để làm điều đó, bởi vì đây là một ví dụ về chuỗi:cách xóa ký tự thành chuỗi?

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

Bây giờ, tôi 'm bằng cách sử dụng chức năng substr, nhưng tôi nghĩ rằng nó hiệu quả hơn nếu tôi sẽ sử dụng Regex không?

+0

Như đến hiệu quả của một regex trên phương pháp khác xem: http://stackoverflow.com/questions/3303355/substring-match-faster-with-regular-expression –

Trả lời

11

chỉ loại dàn diễn viên sẽ làm điều đó một cách hiệu quả

echo (int) $var; 
+0

1 cho giải pháp tốt đẹp. Của nó ra khỏi hộp. –

+0

Thật vậy, thật dễ dàng! Cảm ơn bạn rất nhiều ! – bahamut100

3

Nếu định dạng là như nhau cho tất cả các chuỗi ([số] .jpg), bạn có thể làm:

intval('0130799.jpg', 10); 

intval() in Manual

+0

Đó là ok cho tôi! Cảm tạ ! – bahamut100

0

Nếu bạn sử dụng substr, bạn phải sử dụng nó cùng với strpossubstr cần phải biết chỉ mục chuỗi.

Có, bạn nên sử dụng regex.

Nếu câu hỏi của bạn là cách trích xuất các chữ số từ chuỗi 00000ddddddd.jpg (đối với một số số 0 và 0 khác) ở bất kỳ đâu trong chuỗi, thì bạn nên sử dụng preg_match.

Đây là một ví dụ hoàn chỉnh mà bạn có thể thử trên 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]}"; 

Nếu toàn bộ chuỗi là một tên tập tin, sau đó sử dụng intval hoặc đúc như đề xuất trong câu trả lời khác.

+0

Bằng cách này là ok cho "000AA00" chuỗi? "AA00" trong kết quả? – bahamut100

+0

Rất tiếc! Nắm bắt tốt. Tôi đã chỉnh sửa câu trả lời của mình để nó không nhận được số 0 đứng đầu. Rất xin lỗi. –

0

Với một biểu thức chính quy bạn chỉ có thể làm

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

^ là sự bắt đầu của chuỗi (ở đây với modifier m khởi đầu của một hàng)

0+ nghĩa 1 hoặc nhiều số không.

Regex này sẽ khớp với tất cả các số 0 đứng đầu và thay thế bằng một chuỗi rỗng.

Xem nó here on Regexr

+0

Như nói với Ray Toal câu trả lời: Cách này là ok cho "000AA00" chuỗi? "AA00" trong kết quả? – bahamut100

+0

@ bahamut100 Tôi đã thêm một liên kết đến một công cụ kiểm tra regex nơi bạn có thể nhìn thấy nó. Có nó cũng sẽ loại bỏ 0 hàng đầu từ "000AA00", đó có phải là điều bạn muốn không? – stema

Các vấn đề liên quan