2015-11-30 2 views
2

Извините за мой плохой английский. Вот мой вопрос:Что не так ?! preg_match только цифры

У меня есть $ ул следующего содержания: "1122 Вот моя строка [ABC: 123456]"

Я принимаю:

preg_match("/\d+/",$string,$result); 
echo $result[0]; 

Это нормально, результат верно. 1122

Но я просто хочу номер этого здесь: [ABC: 123456] Не от этого: "123 Вот моя строка ...."

Я принимаю:

preg_match("/\[\d+\]/",$string,$result); 
echo $result[0]; 

Но результат ... "Примечание: Неопределенное смещение: 0 в строке ...."

Что не так?

EDIT: ОК, возможно, есть более простой способ. Номера, которые мне нужны, всегда начинаются с «G015». За этим последуют другие цифры 1,14,80,123 и т. Д.

И это всегда в скобках. Итак, «Текст, какой бы ни был [G015123]».

Возможно, у кого-то есть идея, как мне получить этот номер, чтобы продолжить работу?

ответ

1

вы забыли захватывая Скобки

preg_match("/(\d+)/",$string,$result); 
    echo $result[0]; 

также вы можете использовать preg_match_all(), чтобы захватить все ваши цифру

$string = "1122 Here is my string [ABC: 123456]"; 
preg_match_all("/(\d+)/",$string,$result); 
var_dump($result); 
0

Вы говорите это, чтобы соответствовать одному или более внутри множества , /[\d+]/ должен быть /([\d]+)/ для этого кода.

Если вы хотите совместить все # в своей строке не только с первым, вы должны использовать preg_match_all()

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