如何检查是否字符串内容有任何HTML?(How to check if string content

2019-06-24 21:22发布

如何检查,如果PHP字符串内容包含任何HTML内容?

我不擅长使用正则表达式,所以我想有一个名为“功能is_html ”进行检查。 :) 谢谢!

Answer 1:

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

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

编辑:凯文Traas回答略低于你应该给看看。 他的正则表达式可能会返回假阳性少。



Answer 2:

而不是使用正则表达式(喜欢这里的其他建议)我用下面的方法:

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

这里我用一个PHP函数用strip_tags从字符串中删除任何HTML。 然后,它比较字符串,如果它们不匹配HTML标签存在。



Answer 3:

该接受的答案将考虑含<东西>为HTML其中,显然,这不是一个字符串。

我用下面的,这可能是也可能不是一个好主意。 (评论理解。)

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

此查找包含/>与斜线和关闭托架之间的零个或多个字母的任何字符串。

上述函数返回:

<something>             is NOT HTML
<b>foo</b>              is HTML
<B>foo</B>              is HTML
<b>foo<b>               is NOT HTML
<input />               is HTML


Answer 4:

可能是最简单的方法是这样的:

<?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.


Answer 5:

以下是我想出了

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。 就如此容易。



Answer 6:

这取决于你定义是HTML的内容是什么。

最直接的就是测试如果字符串包含HTML标记,可以用正则表达式来完成

<html.*>

在PHP中测试将是

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

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



文章来源: How to check if string contents have any HTML in it?