ホームページ > データベース > mysql チュートリアル > HTML タグを無視してデータベース列のテキストを検索するにはどうすればよいですか?

HTML タグを無視してデータベース列のテキストを検索するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-06 14:31:12
オリジナル
960 人が閲覧しました

How Can I Search a Database Column for Text While Ignoring HTML Tags?

データベース レコードから HTML タグを削除しています

データベース テーブルから、特定の列にキーワード「mytext」が含まれる行を抽出しようとしています" しかし、間違った結果が表示されます。テーブルには、文字列を囲むさまざまな程度の HTML タグを持つ行が含まれています。目的のテキストを含む行を正確に識別するには、HTML タグで囲まれたテキストを除外することが重要です。

考えられる解決策の 1 つは、fnStripTags として知られるカスタム MySQL 関数を利用することです。この関数は文字列を入力として受け取り、すべての 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 ;
ログイン後にコピー

使用法:

関数を定義したら、クエリでそれを使用して HTML タグを除外できます。検索:

SELECT * FROM table WHERE fnStripTags(colmn_name) LIKE '%mytext%';
ログイン後にコピー

この変更されたクエリは、削除されたテキストに文字列「mytext」が含まれる行のみを返し、正しい結果を提供します:

Row 3: <p>This is the Third row  my mytext is there  </p>
ログイン後にコピー

以上がHTML タグを無視してデータベース列のテキストを検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート