2014-06-02 2 views
0

Привет У меня есть строка, и хотел бы, чтобы искать строку, которая соответствует, напримерРегулярное выражение возвращает число в PHP

[таблица ID = 345 /]

и хотел бы его вернуть цифра 345. Могу ли я узнать, что является правилом?

Мое правило таково:

preg_match("/\[table id=([^]*?) \/\]/s", $char, $match); 

, но не работает.

Как вернуть его, если существует более одного, соответствующего шаблону? на данный момент он возвращает только первое событие.

+0

'' d 'соответствует цифрам, а' + 'соответствует предыдущему правилу один или несколько раз, поэтому' (\ d +) '- это то, что вы ищете, а не' ([^] *?) '. Также [здесь] (http://www.regexr.com/) - хорошее место для тестирования регулярных выражений. – AlphaDelta

+0

FYI, только что добавили онлайн-демоверсию PHP, которая печатает все совпадения. – zx81

ответ

0

Попробуйте это:

preg_match("@\[table ([0-9]+) \/\]@s",$char,$match); 
0

Вот ваш регулярное выражение:

печатает код
\[table id=\K\d+ 

Этот образец все матчи (см выход в нижней части online dem о):

$string = "[table id=345 /] [table id=123 /] 
[table id=999 /] [table id=000 /]"; 
$regex = "~\[table id=\K\d+~"; 
$count = preg_match_all($regex,$string,$m); 
print_r($m[0]); 

Описание Regex

\[      # '[' 
table id=    # 'table id=' 
\K      # Keep what has been matched so far out of the returned match 
\d+      # digits (0-9) (1 or more times (matching 
         # the most amount possible)) 
Смежные вопросы