Есть вот такой небольшой код на странице новости:
$new_text = nl2br($text);
$file = file('tags.txt');
$str = $new_text;
foreach($file as $v) {
$v1 = explode(":", $v);
$str = preg_replace("/(".$v1[0].".*?)\b/iu", "<a href='http://".$v1[1]."'>\\1</a>", $str, 1);
}
echo $str;
Файл tags.txt:
Ольга Бузова:site.ru/olga_buzova/
Ольгу Бузову:site.ru/olga_buzova/
Ольге Бузовой:site.ru/olga_buzova/
Переменная $text с текстом:
Ольга Бузова заявила, что является певицей, однако Ольге Бузовой не поверили.
В результате всего этого на выводе получаю следующее:
<a href="http://site.ru/olga_buzova/">Ольга Бузова</a> заявила, что является певицей, однако <a href="http://site.ru/olga_buzova/">Ольге Бузовой</a> не поверили.
Код расставляет ссылки из файла tags.txt с анкорами, если они встречаются в тексте. Все хорошо, прямые дубли он распознает и не вставляет, однако как из текста удалить второй анкор "Ольге Бузовой", если найден первый "Ольга Бузова"?
Как из текста удалить второй анкор "Ольге Бузовой", если найден первый "Ольга Бузова"?
Объявить временный массив, в который сохранять имеющиеся URL'ы, и проверять на каждой итерации, нет ли в массиве такого адреса:
$text = 'Ольга Бузова заявила, что является певицей, однако Ольге Бузовой не поверили.';
$file = [
'Ольга Бузова:site.ru/olga_buzova/',
'Ольгу Бузову:site.ru/olga_buzova/',
'Ольге Бузовой:site.ru/olga_buzova/'
];
$temp = [];
foreach ($file as $v) {
list($name, $url) = explode(":", $v);
if (! in_array($url, $temp)) {
$text = preg_replace("~$name~iu", "<a href='http://$url'>$0</a>", $text);
$temp[] = $url;
}
}
echo $text;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть возможность добавить зависимость или библиотеку в структуру проекта указавши к ней путь или добавить как модуль
Как работает сокет в java, как он подключает между собой клиент и сервер и позволяет им обмениваться данными?
Задача: Сделать карусель фотографий, где последний элемент будет добавлять в карусель новые фотографии