PHP: замена ссылок в тексте из базы данных

165
23 апреля 2022, 19:10

В базе данных есть текстовый столбец, в котором хранятся ссылки и текст:

"Привет всем <a href="index.php?option=com_content&view=article&id=123">это ссылка на новости the</a> и "Привет всем <a href="index.php?option=com_content&view=category&id=321">это ссылка на категорию</a>

Задача: преобразовать эти ссылки:

в /p123 если index.php?option=com_content&view=article&id=123

и в /c321 если index.php?option=com_content&view=category&id=321

Как это сделать проще всего? Спасибо!))))

Answer 1

Если вы хотите изменить уже готовые данные, то вам будет достаточно такого SQL запроса:

UPDATE TableName SET link = REPLACE(REPLACE(link, "index.php?option=com_content&view=category&id=", "/c"), "index.php?option=com_content&view=article&id=", "/p"); 

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

$str = '<a href="index.php?option=com_content&view=article&id=123">это ссылка на новости the</a><a href="index.php?option=com_content&view=category&id=321">это ссылка на категорию</a>';
$str = str_replace(["index.php?option=com_content&view=article&id=", "index.php?option=com_content&view=category&id="], ["/p", "/c"], $str);
echo $str; //<a href="/p123">это ссылка на новости the</a><a href="/c321">это ссылка на категорию</a>
READ ALSO
LARAVEL: как использовать функцию replace в DB

LARAVEL: как использовать функцию replace в DB

Как использовать функцию REPLACE() в Laravel 57?

235
16 пунктов выбора в поиске в 1 команде Mysql. PHP

16 пунктов выбора в поиске в 1 команде Mysql. PHP

Коллеги, необходимо организовать поиск по 16 пунктам, не закидывайте камнями, я учусь как и все вы

143
Ежедневный буфер активности

Ежедневный буфер активности

Нужен советСовсем скоро планирую добавить на сайт модуль по сбору информации о активности пользователя и подсчёта этой активности

155
SQL query для поиска разницы значений

SQL query для поиска разницы значений

есть база данных вида:

235