2012-05-15 3 views
1

Я изучаю регулярные выражения в последнее время, и мне интересно, если это возможно:Схватив кусок возвращенного матча регулярного выражения (PHP)

Я вытягивать в Твиттере и у меня есть доступ к твитам , но когда я хочу отображать те твиты на моем веб-сайте - ссылки, ответы @ и хеш-теги все разблокированы. Поэтому я начал процесс их связывания. Я на @ ответов и есть вопрос:

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

$content = '@jason is awesome.'; 
$reply = '/@(\w+)/'; 

if(preg_match($reply, $content, $matches)){ 
    var_dump($matches[0]); 
} 

Так что будет возвращать «@jason», но я хочу знать, если есть способ, чтобы найти его с помощью @, но возвращай только то, что приходит после него - просто «Джейсон». Как это сделать с помощью регулярных выражений?

+1

Попробуйте $ матчей [1] – maxdec

+0

Ниццы. Можете ли вы объяснить мне, как это работает? Сохраняет ли он группы в каждом элементе массива совпадений? – jasonaburton

+0

(с флагом по умолчанию) - $ matches [0] содержит строку, соответствующую всем регулярным выражениям - $ matches [1] содержит только первую скобку() - $ matches [2] содержит только вторую и т. Д. – maxdec

ответ

0

Как указано в Double, $ matches [1] даст вам желание, которое вы хотите. $ matches [0] является специальным, он содержит всю строку соответствия. Последующие элементы в списке - это захваченные группы.

+0

Я никогда не знал, как это сработало. Я всегда думал, что это просто свалило матч, и это то, что вы получили. Это будет очень полезно для меня. Благодаря! – jasonaburton

0

Read the #$^&* Manual Я имею в виду .. это RIGHT там ...

Если совпадения предусмотрено, то он заполнен результатами поиска. $ matches [0] будет содержать текст, сопоставляемый с полным шаблоном, $ matches [1] будет иметь текст, который соответствует первому захваченному подклассу , заключенному в скобки, и так далее.

Picture is worth a thousand words

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