2012-05-06 2 views
6

У меня есть эта строкаPHP получить число из строки

@ [123: peterwateber] привет 095032sdfsdf! @ [589: ZZZZ]

Я хочу, чтобы получить 123 и 589 как вы, что с помощью регулярных выражений или что-то в PHP?

Примечание: peterwateber и zzzz - всего лишь примеры. любая случайная строка должна рассматриваться

ответ

6

Не забудьте предпросмотр, так что вы не соответствуете 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

это лучший ответ спасибо помощнику! –

+0

Рад помочь :) – AlienWebguy

2

Ниже регулярное выражение будет извлечь один или несколько цифровых символов в строке:

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

Существует функция называется preg_match_all

Первый параметр принимает регулярное выражение - The в следующем примере показано совпадение как минимум одной цифры, за которой следует любое количество цифр. Это будет соответствовать номерам.

Вторых парами являются самой строкой, объект, от которого вы хотите экстракция

Третья представляет собой массив, в котором все совпавших элементы будут сидеть. Таким образом, первый элемент будет 123, вторым будет 589 и так далее

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

эй .. я забыл упомянуть в моем отправьте мой приоритет при получении номера в строке, когда будет найден «@ [123: некоторый текст здесь]» –

+0

Прошу прощения, я этого не понял. Не могли бы вы быть более ясными? Вы хотите, чтобы номера были напечатаны? –

+0

"@ [123: peterwateber]" preg_match_all должен основываться. Если строка «hello nikhil @ [123: peterwateber]), ее 6-я часть может« выводиться на «123», когда preg_match_all. Поэтому 123 следует получить в строке, которая имеет следующее значение: «@ [номер: строка]» –

Смежные вопросы