Генератор анкоров
Сегодня нашел на серче (форум searchengines.guru) интересную задачу:
Интересует алгоритм перебора текстов для генерации анкоров:
[Вася|Петя|Миша] любит [Катю|Машу|[некрасивую|красивую|] Лену]
Никак не могу придумать как обойти весь текст и сгенерировать. Помогите.
Пост старый, и автор, думаю, нашел уже решение для себя, а я решил для себя..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$src='[Вася|Петя|Миша] любит [Катю|[чумную|озорную] Машу|[некрасивую|красивую [до горя|до моря]] Лену]'; function pexpl($src) { return preg_replace_callback('#\[\s*([^[]*?)\s*\]#ismu', 'expl', $src); } function expl($matches) { $ret = explode("|", $matches[1]); return $ret[rand(0,count($ret)-1)]; } while (preg_match('|\[.+\]|', $src)) $src= pexpl($src); print_r($src); |
Можно добавить сюда create_finction или вообще воспользоваться анонимными функциями (Anonymous functions, их ввели в php 5.3), и сократить код до 1ой строчки, но я не буду этого делать, дабы было понятно, что и как вызывается.
Author: | Tags: /
| Rating:
Leave a Reply