2014-08-29 56 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