Я довольно новичок в использовании 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'];