14:46 

Urban knight
But there’s no sense crying over every mistake. You just keep on trying till you run out of cake.
Таки, доброго дня.
Если коротко, то необходимо вытащить из статьи в википедии все ссылки. Чуток покопавшись, нашел API через который можно получить необходимую статью. В получаемой статье ссылки имеют вот такй заковыристый синтаксис
[[Мещанство|мещанина]]
Две скобки, название статьи, слово для читаемого вида, две скобки.
Чтоб вытащить названия статей пробовал использовать вот такое выражение
preg_match_all('/(?<=\[\[)([^\|])+(?=(\|)?.*(\]\]))/', $input, $matches);

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

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

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

@темы: PHP

Комментарии
2014-07-24 в 15:02 

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

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

2014-07-24 в 15:24 

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

2014-07-25 в 06:07 

Urban knight
But there’s no sense crying over every mistake. You just keep on trying till you run out of cake.
Скептичный циник, для меня регулярки вообще штука мудреная :)
спасиб, доберусь до компьютера-попробую так

   

Сообщество PHP программистов

главная