Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.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 strip_标记不允许小于'<';串_Php_Strip Tags - Fatal编程技术网

PHP strip_标记不允许小于'<';串

PHP strip_标记不允许小于'<';串,php,strip-tags,Php,Strip Tags,请让我知道如何允许少于字符的“正确编码 $string ="abc&lt;123"; 尽管如果您没有对HTML输出进行清理,您也不应该使用strip\u tags()。strip\u tags是清理数据的一种非常基本且不是很好的方法(即“将任意值冲压到形状中”)。同样,正如您所看到的,它不是一个很好的函数。只有在有很好的理由的情况下才应该清理数据,通常没有很好的理由。问问你自己,你从任意剥离部分价值中得到了什么 您可能希望验证或转义以避免语法问题和/或注入攻击。卫生处理很少是正确的做法

请让我知道如何允许少于字符的“正确编码

$string ="abc&lt;123";

尽管如果您没有对HTML输出进行清理,您也不应该使用
strip\u tags()

strip\u tags
是清理数据的一种非常基本且不是很好的方法(即“将任意值冲压到形状中”)。同样,正如您所看到的,它不是一个很好的函数。只有在有很好的理由的情况下才应该清理数据,通常没有很好的理由。问问你自己,你从任意剥离部分价值中得到了什么


您可能希望验证或转义以避免语法问题和/或注入攻击。卫生处理很少是正确的做法。阅读以了解整个主题的更多背景信息。

您可以在字符串中搜索一个字符,将其取出,剥去字符串中的标签()并将其放回:

$string = "abc<123";
$character = "<";
$pos = strpos($string,$character);
$tag = ">";
$check = strpos($string,$tag);
if ($pos !== false && $check == false) {
    $string_array = explode("<",$string);
    $string = $string_array[0];
    $string .= $string_array[1];
    $string = strip_tags($string);
    $length = strlen($string);
    $substr = substr($string, 0, $pos);
    $substr .= "<";
    $substr .= substr($string, $pos, $length);

    $string = $substr;
} else {
    $string = strip_tags($string);
}

$string=“abc问题:

使用trip_标记的目的是防止来自HTML或PHP注入的攻击。然而,trip_标记不仅删除HTML和PHP标记,还删除了带有<运算符的数学表达式的一部分。因此,我们看到的是“abcWhy you you's using
strip_tags
?特别是如果它没有产生期望的结果。答案是不要使用TrasyTAG()。如果你想做的是阻止用户提交危险数据,你应该考虑让他们提交他们想要的任何东西,而当把它附加到生成的HTML上时,就可以在字符串上使用。这样,您可以保留用户发送的所有内容,而不会有任何危险。<是一个标记。它正在被剥离。这就是strip_tags功能的目的。如果您不想删除标记,我建议不要使用strip_tags函数。@Mr_Chimp,从技术上讲,
我有一个HTML表单,它从用户那里获取用户名和密码,然后函数StringFromUser()被称为StringFromUser($string){If(is_string($string)){返回strip_标记($string)}为什么你要在这些标签上使用
strip_tags()
?@tarun-那么,网站用户需要使用HTML代码键入用户名和密码?那是什么,一个有趣的验证码?我的问题是,我们是否可以允许‘不,你不能做正确的事情而做错误的事情’。
$string = "abc<123";
$character = "<";
$pos = strpos($string,$character);
$tag = ">";
$check = strpos($string,$tag);
if ($pos !== false && $check == false) {
    $string_array = explode("<",$string);
    $string = $string_array[0];
    $string .= $string_array[1];
    $string = strip_tags($string);
    $length = strlen($string);
    $substr = substr($string, 0, $pos);
    $substr .= "<";
    $substr .= substr($string, $pos, $length);

    $string = $substr;
} else {
    $string = strip_tags($string);
}
$string = "abc<123";
echo StringFromUser($string);

function StringFromUser($string)
{
    if (is_string($string)) {
        //change "abc<123" to "abc< myUniqueID123", so math expressions are not stripped.
        //use myQuniqueID to identity what we have changed later.
        $string = preg_replace("/(<)(\d)/", "$1 myUniqueID$2", $string);
        $string = strip_tags($string);
        //change "abc< myUniqueID123" back to "abc<123"
        $string = preg_replace("/(<) myUniqueID(\d)/", "$1$2", $string);
        return $string;
    }
}