Из БД MSSQL удалить все ссылки

165
16 июля 2018, 17:00

В БД tсть поле product_description, в котором содержится описание товара в текстовом формате. Но попадаются и внешние ссылки, которые надо удалить из описания. SQL запросом в MSSQL 5 не получится этого сделать, как я понимаю.. Подскажите, пожалуйста, как сделать это на php.

Пример поля product_description:

текст ..... <a href = "site.ru"> САЙТ </a> бла бла 

Надо, чтобы получилось: текст ..... САЙТ бла бла

<?php  
header('Content-Type: text/html; charset=utf-8');
$db = mysql_connect('localhost', 'db_user', 'db_password'); 
mysql_select_db('db_name'); 
mysql_set_charset('utf8'); 
$query = "SELECT * FROM `product_description` where `description` like '%www.goalsite.ru%'"; 
$res = mysql_query($query); 
while($row = mysql_fetch_array($res)){ 
$newankor = preg_replace('/<a href=\"(.*?)\">(.*?)<\/a>/', "\\2", $row['description']);
mysql_query("UPDATE `product_description` SET `description` = $newankor where `product_id` = $row['product_id']"); 
} 
mysql_close($db); 
?>
Answer 1

Лови . Удалить определенные теги с контентом. Вот код как удалить только определенные теги из строки , также удаляет содержимое тега

<?php
    $string = "<p>Awesome <a href='#'>lol</a></p><b> Website</b><i> by Narayan</i>. Thanks for visiting";
    $tags = array("a", "i");
    echo preg_replace('#<(' . implode( '|', $tags) . ')(?:[^>]+)?>.*?</\1>#s', '', $string);
?>

Выводит

Awesome
Website. Thanks for visiting
Answer 2

Вот

CREATE FUNCTION [dbo].[udf_StripHTML] (@HTMLText VARCHAR(MAX))
RETURNS VARCHAR(MAX) AS
BEGIN
    DECLARE @Start INT
    DECLARE @End INT
    DECLARE @Length INT
    SET @Start = CHARINDEX('<',@HTMLText)
    SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText))
    SET @Length = (@End - @Start) + 1
    WHILE @Start > 0 AND @End > 0 AND @Length > 0
    BEGIN
        SET @HTMLText = STUFF(@HTMLText,@Start,@Length,'')
        SET @Start = CHARINDEX('<',@HTMLText)
        SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText))
        SET @Length = (@End - @Start) + 1
    END
    RETURN LTRIM(RTRIM(@HTMLText))
END
GO

User Defined Function to Strip HTML

MySQL: UDF to remove HTML Tag from the String Data

READ ALSO
Как отфильтровать объекты в массиве по значениям?

Как отфильтровать объекты в массиве по значениям?

Есть массив объектов у которых есть параметры: pay и cart, которые имеют значение 1 или 0Я принимаю GET параметры pay и cart со значениями:

180
Нужно ли прятать абсолютные пути к файлам в php?

Нужно ли прятать абсолютные пути к файлам в php?

Обычно различного рода экзепшенами стараются закрыть внутренние ошибкиПриведу примитивный пример, чтобы понятнее была суть вопроса

172
Не валидный JSON, PHP

Не валидный JSON, PHP

Получаю вот такой JSON:

170