如何检查字符串内容中是否包含任何HTML?

时间:2012-05-27 23:41:38

标签: php html regex xhtml

如何检查PHP字符串内容是否包含任何HTML内容?

我对正则表达式不太满意所以我希望有一个名为“is_html”的函数来检查它。 :)谢谢!

6 个答案:

答案 0 :(得分:27)

如果你想测试一个字符串是否包含"<something>",(这是懒惰但可以为你工作),你可以尝试这样的事情:

function is_html($string)
{
  return preg_match("/<[^<]+>/",$string,$m) != 0;
}

编辑:您应该看看下面的Kevin Traas回答。他的正则表达可能会减少误报。

答案 1 :(得分:13)

我没有使用正则表达式(就像这里的其他建议一样),而是使用以下方法:

    function isHtml($string)
    {
        if ( $string != strip_tags($string) )
        {
            return true; // Contains HTML
        }
        return false; // Does not contain HTML
    }

这里我使用PHP函数strip_tags从字符串中删除任何HTML。然后它会比较字符串,如果它们不匹配,则会出现HTML标记。

答案 2 :(得分:13)

接受的答案将考虑包含&lt; something&gt;的字符串。作为HTML,显然,它不是。

我使用以下内容,这可能是也可能不是更好的主意。 (评论赞赏。)

first_variable, second_variable, third_variable, fourth_variable = \   
    my_example_function()

这会查找包含/&gt;的任何字符串;斜杠和右括号之间有零个或多个字母。

以上函数返回:

function isHTML( $str ) { return preg_match( "/\/[a-z]*>/i", $str ) != 0; }

答案 3 :(得分:9)

可能最简单的方法是:

<?php

function hasTags( $str )
{
    return !(strcmp( $str, strip_tags($str ) ) == 0);
}

$str1 = '<p>something with <a href="/some/url">html</a> in.';
$str2 = 'a string.';

var_dump( hasTags( $str1 ) ); // true - has tags.
var_dump( hasTags( $str2 ) ); // false - no tags.

答案 4 :(得分:1)

这就是我提出的

function isHtml($string){
     preg_match("/<\/?\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)\/?>/",$string, $matches);
     if(count($matches)==0){
        return FALSE;
      }else{
         return TRUE;
      }
}

您只需传递一个字符串并检查它是返回true还是false。就这么简单。

答案 5 :(得分:-2)

这取决于您定义的html内容。

最简单的方法是测试字符串是否包含可以使用正则表达式完成的html标记

<html.*>

在php中,测试将是

if (preg_match('/<html.*>/', $subject)) {
    # Successful match
} else {
    # Match attempt failed
}

如果你想看到你有有效的html,最好使用html解析器。