Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查字符串内容中是否包含HTML?_Php_Html_Regex_Xhtml - Fatal编程技术网

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

Php 如何检查字符串内容中是否包含HTML?,php,html,regex,xhtml,Php,Html,Regex,Xhtml,如何检查PHP字符串内容是否包含任何HTML内容 我不擅长使用正则表达式,因此我希望使用名为“is_html”的函数来检查此问题:谢谢大家! 这取决于您定义的html内容 最简单的事情是测试字符串是否包含可以用正则表达式完成的html标记 <html.*> 在php中,测试将是 if (preg_match('/<html.*>/', $subject)) { # Successful match } else { # Match attempt f

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


我不擅长使用正则表达式,因此我希望使用名为“
is_html
”的函数来检查此问题:谢谢大家!

这取决于您定义的html内容

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

<html.*>

在php中,测试将是

if (preg_match('/<html.*>/', $subject)) {
    # Successful match
} else {
    # Match attempt failed
}
if(预匹配('//',$subject)){
#成功的比赛
}否则{
#匹配尝试失败
}

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

最简单的方法可能是:

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

如果要测试字符串是否包含
”,(这是一种懒惰的方法,但可以为您工作),可以尝试以下方法:

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

return preg_match(“/以下是我的想法

function isHtml($string){
     preg_match("/<\/?\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)\/?>/",$string, $matches);
     if(count($matches)==0){
        return FALSE;
      }else{
         return TRUE;
      }
}
函数isHtml($string){
preg_match(“/而不是使用正则表达式(如此处的其他建议),我使用以下方法:

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

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

< P>接受的答案将考虑一个包含HTML的字符串,很明显,它不是。 我使用下面的方法,这可能是一个更好的主意,也可能不是

这将查找任何包含/>的字符串,在斜杠和右括号之间有零个或多个字母

上述函数返回:

<something>             is NOT HTML
<b>foo</b>              is HTML
<B>foo</B>              is HTML
<b>foo<b>               is NOT HTML
<input />               is HTML
不是HTML
foo是HTML
foo是HTML
foo不是HTML
是HTML吗


你说的“html内容”是什么意思?快速谷歌搜索显示了html标记,具体的html字符如,,=对于以下字符串,
函数应该返回什么?
函数:(1)
“我想12我认为我发布的链接是CLIVER ehhI,意思是如果我有任何包含字符、=、和引号的HTML标记!嗯,上面的答案将测试HTML标记是否存在。你知道,不管怎样,在没有正则表达式的情况下,它能准确地表示这个表达式吗?我使用的是相同的表达式,我很好奇正则表达式与非正则表达式的区别le,classy,nice hack,我喜欢。@IanWood-不太喜欢。例如
I这会导致错误标志。以字符串为例
I Hmmm,但是会像许多字符串函数一样在utf-8文本上出现scrcmp错误吗?
strlen
在那里是不必要的。好的一点@Red。我已经从代码中删除了
strlen
,尽管它保存的代码很少另一个过程。感谢建设性的反馈。函数永远不会返回false@paulo62我检查该方法是否返回
true
。如果需要,可以很容易地放置一个else。我已经更新了它,但是…
strip\u标记
在大多数情况下过于繁重。字符串
的值是我可能会使用
+
t这是因为
不是HTML。否则,这是一个非常酷的概念!@gooli-使用
+
,它与
不匹配。我发现这个正则表达式的主要问题是它与simple
不匹配,simple
可能是HTML注释中唯一的标记。
<something>             is NOT HTML
<b>foo</b>              is HTML
<B>foo</B>              is HTML
<b>foo<b>               is NOT HTML
<input />               is HTML