Как использовать preg_match для извлечения данных?

Я довольно новичок в использовании preg_match. Искал много ответа, прежде чем публиковать этот вопрос. Нашел много сообщений, чтобы получить данные на основе идентификатора youtube и т. Д. Но ничего в моих потребностях. Если его глупый вопрос, пожалуйста, простите меня.

Мне нужно получить идентификатор из строки с preg_match. строка находится в формате

[#1234] Subject 

Как я могу извлечь только «1234» из строки?

Одним из решений является:

 \[#(\d+)\] 

Это соответствует левой квадратной скобке и знаку фунта [# , затем фиксирует одну или несколько цифр, а затем закрывает правую квадратную скобку ] .

Вы бы использовали его как:

 preg_match( '/\[#(\d+)\]/', '[#1234] Subject', $matches); echo $matches[1]; // 1234 

Вы можете видеть, как он работает в этой демонстрации .

Вы можете попробовать следующее:

 preg_match('~(?<=\[#)\d+(?=])~', $txt, $match); 

(?<=..) является lookbehind (только проверка)

(?=..) является ориентиром

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

 preg_match('/^\[\#([0-9]+)\].+/i', $string, $array); 

Это можно сделать так:

 <?php $subject = "[#1234] Subject"; $pattern = '/^\[\#([0-9]+)/'; preg_match($pattern, $subject, $matches); echo $matches[1]; // 1234 ?> 

Чтобы получить только целое число, вы можете использовать подшаблоны http://php.net/manual/en/regexp.reference.subpatterns.php

  $string="[#1234] Subject"; $pattern="/\[#(?P<my_id>\d+)](.*?)/s"; preg_match($pattern,$string,$match); echo $match['my_id'];