是否有任何库函数用于此目的,所以我不手动完成并冒险以TDWTF结束?
echo ceil(31497230840470473074370324734723042.6);
// Expected result
31497230840470473074370324734723043
// Prints
<garbage>
Run Code Online (Sandbox Code Playgroud) 将数据验证完全委托给数据库引擎约束是一种好习惯吗?
从应用程序验证数据不会阻止从另一个软件无效插入(可能由另一个团队用另一种语言编写).使用数据库约束可以减少需要担心无效输入数据的点.
如果您在数据库和应用程序中都进行了验证,那么维护变得很无聊,因为您必须更新谁知道有多少应用程序的代码,从而增加了人为错误的可能性.
我只是看不到这么做,看着自由软件项目的代码.
问题是你无法真正告诉用户字段中允许有多少字符,因为转义值显然比未转义字符具有更多字符.
我看到一些解决方案,但没有一个看起来很好:
还有其他选择吗?这种情况有"最佳做法"吗?
示例代码:
$string = 'javascript:alert("hello!");';
echo strlen($string);
// outputs 27
$escaped_string = filter_var('javascript:alert("hello!");', FILTER_SANITIZE_ENCODED);
echo strlen($escaped_string);
// outputs 41
Run Code Online (Sandbox Code Playgroud)
如果数据库字段的长度为40,则转义的数据将不适合.