我有一个用于去除不需要的HTML标记的函数。 例如
function getValidStrings($inputStr, $allowedTag) {
return trim(strip_tags($inputStr, $allowedTag));
} // End function
// Here I am calling this function which is defined in an included php Class file
$formatter = new $StringTextFormatter;
$validString = $formatter->getValidStrings('<', '<br>');
// The $validString has empty string "" ... Why ?
当我通过&#39;&lt;&#39;对strip_tags的字符,它返回空。 但是,如果我传入&#39;&gt;&#39;,strip_tags会提供正确的字符。
我需要能够返回&#39;&lt;&#39;从上面的电话。 知道解决方案可能是什么吗?
答案 0 :(得分:1)
正如Federkun所说,它将<
视为标签的开头。你传递了破碎的HTML,它尽力给你你想要的东西:没有(大多数)HTML的字符串。正如Clive所说,他们在手册中警告过你
由于strip_tags()实际上并未验证HTML,因此部分或损坏的代码可能导致删除的文本/数据超出预期。
如果你在那个坏<
之后传递任何东西,它也会被剥夺。它必须是远程接近HTML的东西才能正常工作
echo strip_tags('<bad HTML string here<br>'); // empty string
echo strip_tags('<bad HTML<br> Hello!'); // Also empty
echo strip_tags('<bad HTML> Hello!'); // Hello!
答案 1 :(得分:0)
因为您处于html环境中。如果html解析器遇到<
,那就是一个开头标记。如果<
没有这个含义,那么您需要将其替换为等效的html实体:<