Intereting Posts
Откройте страницу iframe в своем родителе, когда прямая ссылка относится к одной из дочерних страниц Используйте локальную переменную в preg_replace_callback – PHP Как создать сервисную службу php Есть ли способ петли через многомерный массив, не зная его глубины? Просто получить URL-адрес изображения из строки в PHP Ориентированный на производительность способ защиты файлов на уровне PHP? Как получить разрешение экрана посетителя в javascript и / или php? Как создать учетную запись электронной почты в Cpanel через PHP? передача параметра в удаленный модальный в бутстрап 3 передать crontab переменную и прочитать ее с PHP? Клиентская библиотека PHP Stomp для ActiveMQ + WebSockets Как предотвратить повторное замещение вторым регулярным выражением? Приложение веб-чата с использованием технологии Long-Polling с PHP, MySQL и jQuery Вы знаете какие-либо популярные PHP-шаблоны для php, которые имеют концепцию текущего контекстного узла? «Неустранимая ошибка: не удается переопределить класс» … но класс не был объявлен

Проблемы с PHP и Regex

Возможный дубликат:
Лучший способ разбора bbcode

Мне нужно получить имя пользователя из кавычек для моего форума (PHP).

Содержимое, которое я ищу, будет таким:

[quote author=username link=topic=1234.msg1234567#1234567 date=1234567890] lorem ipsum dolor [/quote] lorem ipsum dolor sit amet 

Все, что мне нужно, это «имя пользователя».

Большая проблема заключается в том, что сообщение может иметь несколько кавычек и, следовательно, несколько имен пользователей, поэтому мне нужно получить каждое имя в массив, а мои навыки регулярного выражения плохие.

Используйте preg_match_all () – http://php.net/manual/en/function.preg-match-all.php, и вы получите результат в матчах

preg_match_all ('/ author = (\ w +) / i', $ string, $ usernames); Edit: \ w – любой символ «слова». Символом «слово» является любая буква или цифра или символ подчеркивания, то есть любой символ, который может быть частью слова «Perl». Вы можете изменить это с помощью [az], если имя пользователя содержит только буквы.

Попробуйте это как preg_match_all ('/ author = (. +) \ S + link / i', $ string, $ usernames);

\ s – любой символ пробела

Кроме того, если вы хотите попрактиковаться в RegEx – поиграйте с ними.

Попробуйте RegExhibit (Mac) http://homepage.mac.com/roger_jolly/software/ или Regex Coach (Win) http://www.weitz.de/regex-coach/

Оба являются бесплатными и действительно полезными.

Я не могу помочь вам с php в деталях, но Regex должен выглядеть так: «quote author = ([A-Za-z] *)»

Затем вы получаете доступ к коллекции групп, чтобы получить имя. "([A-Za-z] *)" определяет группу, к которой вы хотите получить доступ.