2014-08-29 27 views
2

可能基于以下问题:Best way to strip html tags from a string in sql server?从MySQL数据库列中的数据中剥离HTML

想到我是一个noob。我有一个数据在其中的领域。我需要从这个列中去掉html,并且我知道有一个PHP函数可以实现这个功能。我该如何在我的SQL数据库中执行此操作?

我为查询输入了什么内容?从表格中选择我的专栏(我称之为专业领域)......然后呢?

+0

您可以选择从某种类型的ID一起最好的表中的列。然后清理它们,然后更新它们,这是id派上用场的地方。所以你会知道你正在更新正确的行。 – Rimble 2014-08-29 12:17:22

+0

将事物放入数据库之前,去除HTML会更容易吗? – 2014-08-29 12:18:42

+0

我假设你没有使用SQL-Server,因为那个问题解释了如何在那里完成。你使用的是什么DBMS? – Barmar 2014-08-29 12:20:16

回答

0

使用strip_tag()功能

// assuming that you're using MySQL 
$result = mysqli_query("SELECT column FROM table"); 
while ($row = mysqli_fetch_array($result)) { 
    echo strip_tags($row['column']) . '<br />'; 
} 

,或者使用preg_replace()功能和这个简单的正则表达式<[^>]*>

echo preg_replace('/<[^>]*>/', '', $row['column']); 

Working PHP demo

Recomended方法:strip_tags()功能在这种情况下。它有两个论点;第一个是文本本身,第二个包含allowed tags;因此,举例来说,如果你想保持<a>和清洁一切您只需使用它像这样:

strip_tags($text, '<a>'); 
0

我不是MS SQL用户,但正如我所看到的您发布的链接。它在那里解释。您只需通过粘贴该代码即可创建一个功能。

//Function From the Link Given in Question 

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 

我想你可以使用上面的函数使用这样的查询。

select * from table where dbo.udf_StripHTML(Content1) like ‘%Hello%’ 

即时通讯不知道上述查询,但我认为它会是这样的。然而,上面的函数定义,只是尝试在查询中使用,可能会解决您的问题。

+0

谢谢,但粘贴在哪里? – ObiWanKobi 2014-08-29 12:36:52

+0

@ObiWanKobi在你的代码中的某处..它在查询之上,因为如果你去使用你尚未定义的函数,你将会有一段糟糕的时间。 – 2014-08-29 12:38:45