【发布时间】:2015-03-22 10:00:21
【问题描述】:
我有一个小要求。我只需要删除文本中的锚标记(而不是剩余的 HTML 标记),但不应删除文本。
只应删除锚标记。
我得到了以下脚本并对其进行了一些修改。它正在处理一个小问题,即</a> 没有被删除。你能帮我解决这个问题吗?
如果你有更好的主意,请告诉我。
例如
<a href="google.com">Click to</a>
Click to 不应被删除
代码:
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('<a',@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('<a',@HTMLText)
SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText))
SET @Length = (@End - @Start) + 1
END
RETURN LTRIM(RTRIM(@HTMLText))
END
GO
【问题讨论】:
-
为什么不直接替换
RETURN LTRIM(RTRIM(REPLACE(@HTMLText, '</a>', ''))?
标签: sql sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012