繁体   English   中英

从MySQL数据库列中的数据中剥离HTML

[英]Striping HTML from data in MySQL database column

可能基于以下问题: 从sql server中的字符串中删除html标签的最佳方法?

认为我是菜鸟。 我有一个包含数据的字段。 我需要从此列中删除html,并且我知道有一个PHP函数可以做到这一点。 如何在我的SQL数据库中执行此操作?

我要为查询输入什么? 从表格中选择我的列(称为字段)...然后呢?

我不是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%’

我不确定上面的查询,但我认为那会是类似的事情。 但是上面定义的函数,只是尝试在查询中使用,可能是它解决了您的问题。

使用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']);

工作的PHP演示

推荐方法:在这种情况下为strip_tags()函数。 它有两个参数。 第一个是文本本身,第二个包含allowed tags ; 因此,例如,如果您想保留<a>并清理其他所有内容,则可以像这样简单地使用它:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM