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

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

"Привет всем <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

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


Ответы (1 шт):

Автор решения: crazyRabbit

Если вы хотите изменить уже готовые данные, то вам будет достаточно такого 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>
→ Ссылка