sql >> データベース >  >> RDS >> Mysql

MySQLはhtmlデータまたはPHPから平文を抽出しますか?

    コンテンツが常にタグ(など)で始まる場合

    これを試してください:

    SELECT * from table  WHERE colmn_name REGEXP  '>[^<]*mytext'; 
    

    別の方法は、strip_tagsを使用することです —文字列からHTMLタグとPHPタグを削除します

    <?php
    $text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
    echo strip_tags($text);
    echo "\n";
    
    // Allow <p> and <a>
    echo strip_tags($text, '<p><a>');
    ?>
    

    上記のコードの出力:

    Test paragraph. Other text
    <p>Test paragraph.</p> <a href="#fragment">Other text</a>
    

    警告 ::Because strip_tags() does not actually validate the HTML, partial or broken tags can result in the removal of more text/data than expected.

    htmlコードを変数に入れる必要があります。たとえば$html_input

    $html_input= "'<p>text between tag 'p'</p><span>text between 'span'</span>'";
    $stripped_html = strip_tags($html_input);
    
    // Now insert it into the table `text`
    INSERT INTO `text` VALUES (1, $striped_html);
    

    純粋にMYSQL 方法:

    CREATE FUNCTION `strip_tags`($str text) RETURNS text
    BEGIN
        DECLARE $start, $end INT DEFAULT 1;
    LOOP
        SET $start = LOCATE("<", $str, $start);
        IF (!$start) THEN RETURN $str; END IF;
        SET $end = LOCATE(">", $str, $start);
        IF (!$end) THEN SET $end = $start; END IF;
        SET $str = INSERT($str, $start, $end - $start + 1, "");
    END LOOP;
    END;
    
    mysql> select strip_tags('<span>hel<b>lo <a href="world">wo<>rld</a> <<x>again<.');
    +----------------------------------------------------------------------+
    | strip_tags('<span>hel<b>lo <a href="world">wo<>rld</a> <<x>again<.') |
    +----------------------------------------------------------------------+
    | hello world again.                                                   |
    +----------------------------------------------------------------------+
    1 row in set
    

    参照: Stackoverflow



    1. mysqlクエリは1つのID列から複数のテーブルを表示します

    2. MySQLテーブルの列名のデフォルト値を取り戻すことはできますか?

    3. このmysqlクエリで全表スキャンを回避するにはどうすればよいですか?

    4. MySQLがエラーを出すのはなぜですか?関数から結果セットを返すことは許可されていませんか?