データベース レコードからの HTML タグの削除
MySQL では、特定の手法を使用して特定の列から HTML タグを削除できます。次のデータについて考えてみましょう:
SELECT * FROM table WHERE colmn_name ` like '%mytext%'
このクエリは、コンテンツ内に「mytext」が含まれるのは行 3 のみですが、4 行すべてを返します。目的の結果 (行 3 のみ) を得るには、より正確なアプローチが必要です。
解決策の 1 つは、ユーザー定義関数 (UDF) を使用して HTML タグを削除することです。以下に例を示します。
SET GLOBAL log_bin_trust_function_creators=1; DROP FUNCTION IF EXISTS fnStripTags; DELIMITER | CREATE FUNCTION fnStripTags( Dirty varchar(4000) ) RETURNS varchar(4000) DETERMINISTIC BEGIN DECLARE iStart, iEnd, iLength int; WHILE Locate( '<', Dirty ) > 0 And Locate( '>', Dirty, Locate( '<', Dirty )) > 0 DO BEGIN SET iStart = Locate( '<', Dirty ), iEnd = Locate( '>', Dirty, Locate('<', Dirty )); SET iLength = ( iEnd - iStart) + 1; IF iLength > 0 THEN BEGIN SET Dirty = Insert( Dirty, iStart, iLength, ''); END; END IF; END; END WHILE; RETURN Dirty; END; | DELIMITER ;
この関数 fnStripTags() は、指定された入力文字列からすべての HTML タグを繰り返し見つけて削除します。次のようにクエリで使用できます:
SELECT * FROM table WHERE fnStripTags(colmn_name) LIKE '%mytext%'
この改訂されたクエリは、非 HTML コンテンツ内に「mytext」を含む行 3 のみを返します。
以上がMySQL で HTML タグを削除した後、データベース レコードを効率的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。