如何检查PHP字符串内容是否包含任何HTML内容?
我对正则表达式不太满意所以我希望有一个名为“is_html
”的函数来检查它。 :)谢谢!
答案 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解析器。