2012-05-06 27 views
6

Tôi có chuỗi nàyphp được số từ một chuỗi

@ [123: peterwateber] hello there 095032sdfsdf! @ [589: zzzz]

Tôi muốn nhận 123 và 589 làm thế nào để bạn biết rằng sử dụng biểu thức chính quy hoặc một cái gì đó trong PHP?

Lưu ý: peterwateber và zzzz chỉ là ví dụ. bất kỳ chuỗi ngẫu nhiên nên được xem xét

Trả lời

6

Đừng quên lookahead do đó bạn không phù hợp 095032:

$foo = '@[123:peterwateber] hello there 095032sdfsdf! @[589:zzzz]'; 
preg_match_all("/[0-9]+(?=:)/", $foo, $matches); 
var_dump($matches[0]); // array(2) { [0]=> string(3) "123" [1]=> string(3) "589" } 
+0

đây là câu trả lời tốt nhất nhờ bạn đời! –

+0

Rất vui được trợ giúp :) – AlienWebguy

2

Các regex sau đây sẽ trích xuất một hoặc nhiều ký tự số trong một hàng:

preg_match_all('#\d+#', $subject, $results); 
print_r($results); 
1

Có một chức năng gọi là preg_match_all

Tham số đầu tiên chấp nhận một biểu thức chính quy - Các ví dụ sau cho thấy 'khớp ít nhất một chữ số, tiếp theo là bất kỳ số chữ số nào. Điều này sẽ khớp với số.

Các param thứ hai là chuỗi chính nó, là chủ đề mà từ đó bạn muốn khai thác

Thứ ba là một mảng vào đó tất cả các yếu tố phù hợp sẽ ngồi. Vì vậy, yếu tố đầu tiên sẽ là 123, thứ hai sẽ là 589 và vân vân

preg_match_all("/[0-9]+/", $string, $matches); 
+0

hey .. Tôi quên đề cập đến Trong tôi đăng ưu tiên của tôi trong việc nhận được số trong chuỗi được đối sánh khi "@ [123: một số văn bản ở đây]" được tìm thấy –

+0

Tôi xin lỗi vì tôi không hiểu điều đó. Bạn có thể rõ ràng hơn một chút không? Bạn có muốn các số được in không? –

+0

"@ [123: peterwateber]" preg_match_all phải dựa vào. nếu chuỗi là "hello nikhil @ [123: peterwateber] thứ 6 của nó có thể" đầu ra phải là "123" khi preg_match_all. Do đó, 123 phải nhận được trong chuỗi có giá trị sau "@ [number: string]" –

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