14:46

Успокой мой пьяный разум многоликая река. Пусть отныне вдохновляют лишь камни да вода.
Таки, доброго дня.
Если коротко, то необходимо вытащить из статьи в википедии все ссылки. Чуток покопавшись, нашел API через который можно получить необходимую статью. В получаемой статье ссылки имеют вот такй заковыристый синтаксис
[[Мещанство|мещанина]]
Две скобки, название статьи, слово для читаемого вида, две скобки.
Чтоб вытащить названия статей пробовал использовать вот такое выражение
preg_match_all('/(?<=\[\[)([^\|])+(?=(\|)?.*(\]\]))/', $input, $matches);

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

Если брать текст, про Ленина, то не правильно уже с второго результата =(

Ссылка на статью, про Ленина через API
ru.wikipedia.org/w/api.php?format=xml&action=qu...

@темы: PHP

Комментарии
24.07.2014 в 15:02

Миру - мир. А Вам - пломбир!
Что-то вы как-то замудрили, не?

Регексп для поиска "[[Мещанство|мещанина]]" будет выглядеть вот так (запилил туда кусок текста про Ленина):
/\[{2}([\w\s]+\|[\w\s]+)\]{2}/ui
Затем массив этих строк обходим foreach ($data as $str), делаем explode('|', $str) и далее по нужной логике.
24.07.2014 в 15:24

Миру - мир. А Вам - пломбир!
UPD: забыл, что в урле Вики есть пунктуация, обновил регексп:
/\[{2}([\w\s\.,;:\-_]+\|[\w\s\.,;:\-_]+)\]{2}/ui
25.07.2014 в 06:07

Успокой мой пьяный разум многоликая река. Пусть отныне вдохновляют лишь камни да вода.
Скептичный циник, для меня регулярки вообще штука мудреная :)
спасиб, доберусь до компьютера-попробую так

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail