nic*_*ico 28
如果你想测试一个字符串是否包含一个"<something>"(这是懒惰但可以为你工作),你可以尝试这样的事情:
function is_html($string)
{
return preg_match("/<[^<]+>/",$string,$m) != 0;
}
Run Code Online (Sandbox Code Playgroud)
编辑:您应该看看下面的Kevin Traas答案.他的正则表达可能会减少误报.
ᴍᴀᴛ*_*ᴋᴇʀ 13
而不是使用正则表达式(像这里的其他建议)我使用以下方法:
function isHtml($string)
{
if ( $string != strip_tags($string) )
{
return true; // Contains HTML
}
return false; // Does not contain HTML
}
Run Code Online (Sandbox Code Playgroud)
这里我使用PHP函数strip_tags从字符串中删除任何HTML.然后它比较字符串,如果它们不匹配,则存在HTML标记.
Kev*_*aas 13
接受的答案将考虑包含<something>作为HTML的字符串,显然,它不是.
我使用以下内容,这可能是也可能不是更好的主意.(评论赞赏.)
function isHTML( $str ) { return preg_match( "/\/[a-z]*>/i", $str ) != 0; }
Run Code Online (Sandbox Code Playgroud)
这将查找包含斜杠和结束括号之间的零个或多个字母的/>的任何字符串.
上面的函数返回:
<something> is NOT HTML
<b>foo</b> is HTML
<B>foo</B> is HTML
<b>foo<b> is NOT HTML
<input /> is HTML
Run Code Online (Sandbox Code Playgroud)
Ian*_*ood 10
可能最简单的方法是:
<?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.
Run Code Online (Sandbox Code Playgroud)