为了账号安全,请及时绑定邮箱和手机立即绑定

是否有任何函数可以查找 filter_var() 函数返回的字符串的实际长度?

是否有任何函数可以查找 filter_var() 函数返回的字符串的实际长度?

PHP
MYYA 2023-09-08 22:09:39
我试图使用 strlen() 和 mb_str() 函数查找 filter_var() 函数返回的字符串的实际长度。代码:<?php$name = "Carl O'Johnson";echo "The actual length of the string: " . strlen($name) . "<br>";$name = filter_var($name, FILTER_SANITIZE_STRING);echo "The length of the string using strlen() after filter_var() function: " . strlen($name) . "<br>";echo "The length of the string using mb_strlen() after filter_var() function: " . mb_strlen($name) . "<br>";?>输出:字符串的实际长度:14 在filter_var()函数之后使用strlen()的字符串长度:18 在filter_var()函数之后使用mb_strlen()的字符串长度:18filter_var 函数将 ' 编码为 #39;。哪个函数将返回filter_var()函数返回的字符串的实际长度?
查看完整描述

1 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

您可以通过设置选项在清理字符串时单独保留引号(如果您同意的话)FILTER_FLAG_NO_ENCODE_QUOTES:


$name = filter_var($name, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);

$length = mb_strlen($name);  // 14

或者,您可以在计算长度之前转换生成的 HTML 实体,利用html_entity_decode并传递ENT_QUOTES标志:


$name = filter_var($name, FILTER_SANITIZE_STRING);

$length = mb_strlen(html_entity_decode($name, ENT_QUOTES, 'UTF-8'));  // 14

请注意,在这种情况下,strlen将产生相同的输出。


查看完整回答
反对 回复 2023-09-08
  • 1 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信