草庐IT

mb_strlen

全部标签

php - mb_* 是否需要从多字节字符串中替换单字节字符?

假设我有一个UTF-8像这样的文本:âàêíóôõâàêíóôõâàêíóôõ我想替换与.我需要使用mb_str_replace吗?或者我可以使用str_replace?考虑br/>都是单字节char吗? 最佳答案 自str_replace是二进制安全的,UTF-8是双射编码,你可以使用str_replace,即使搜索字符串或替换包含多字节字符,只要所有三个参数都编码为UTF-8。这就是为什么没有mb_str_replace的原因功能放在首位。如果您的编码不是双射的-即同一个字符串有多种表示形式,例如在UTF-7中,可以表示为'+A

php - 为什么调用 mb_convert_encoding 来清理文本?

引用this(excellent)answer.他指出,在PHP中转义输入的最佳解决方案是调用mb_convert_encoding其次是html_entities.但为什么要使用相同的传入和传出参数(UTF8)调用mb_convert_encoding?原答案摘录:Evenifyouusehtmlspecialchars($string)outsideofHTMLtags,youarestillvulnerabletomulti-bytecharsetattackvectors.Themosteffectiveyoucanbeistousetheacombinationofmb_co

php - 调用未定义函数 FOS\UserBundle\Util\mb_convert_case()

我遇到了错误CalltoundefinedfunctionFOS\UserBundle\Util\mb_convert_case()app_path/vendor/bundles/FOS/UserBundle/Util/Canonicalizer.phponline18它发生在我尝试加载固定装置时。第一步是安装mbstring.soext,所以我用编译了php--enable-mbstring成功编译mbstringextphpize./configuremakemakeinstall并添加extension=mbstring.so到我的php.ini文件。不幸的是,我仍然遇到该错误,

PHP: mb_strtoupper 不工作

我对UTF-8和mb_strtoupper有疑问。mb_internal_encoding('UTF-8');$guesstitlestring='LeCourrierdeSáint-Hyácinthe';$encoding=mb_detect_encoding($guesstitlestring);if($encoding!=='UTF-8')$guesstitlestring=mb_convert_encoding($guesstitlestring,'UTF-8',$encoding);echo"DEBUG1$guesstitlestring\n";$guesstitlestri

php - 警告:strlen()期望参数1为字符串,给定[duplicate]数组

可能重复:mysql_fetch_array()expectsparameter1toberesource,booleangiveninselect我要把我的网站移到一个新的主机上。以前的php版本是5.2,现在是5.3。在我更改了php版本之后,几乎每页都会显示警告:strlen()expectsparameter1tobestring,arraygiven错误行是此函数中的第三行:functionimplodestr($arr,$field){unset($out_str);if(!is_array($arr)||!$arr||strlen($arr)==0)return0;//e

PHP 缺少 mb_strpos 函数?

我收到这个错误:PHPFatalerror:Calltoundefinedfunctionmb_strpos()in/my/file.php这很奇怪,因为mb_strpos()在PHP4中引入,我正在运行PHP5.3.3$php-vPHP5.3.3(cli)(built:Feb22201219:38:14)Copyright(c)1997-2010ThePHPGroupZendEnginev2.3.0,Copyright(c)1998-2010ZendTechnologies有没有人遇到过类似的问题并且知道如何解决?我搜索了一下,但无法弄清楚。附言。我正在运行centOS5。

php - mb_detect_encoding 将 ASCII 检测为 UTF-8?

我正在尝试自动将导入的IPTC元数据从图像转换为UTF-8,以便基于PHPmb_函数存储在数据库中。目前看起来是这样的:$val=mb_convert_encoding($val,'UTF-8',mb_detect_encoding($val));但是,当mb_detect_encoding()被提供一个ASCII字符串(Latin1字段中192-255的特殊字符)时,它会将其检测为UTF-8,因此在下面的尝试中将所有内容都转换为为了正确使用UTF-8,所有特殊字符都被删除。我尝试通过查找Latin1值来编写自己的方法,如果没有出现,我将继续让mb_detect_encoding决定它

php - mb_strlen() 够了吗?

在PHP中计算UTF-8字符串的长度时,我使用mb_strlen()。例如:if(mb_strlen($name,'UTF-8')由于文本字段可以接受任何语言(多语言),我想确保PHP能够正确计算多语言UTF-8字符。这是否足够,还是我需要使用其他方法?我担心PHP可能会因为某些原因出错,或者我只是持怀疑态度,但我不希望人们绕过重要的验证,因为PHP出错了。 最佳答案 正确if(mb_strlen($name,'UTF-8')确保标题正确HTTP-header(Content-Type:text/html;charset=UTF-8

php - PHP 中的 $str == '' 和 strlen($str) == 0 有区别吗?

正如标题所说:PHP中$str==''和strlen($str)==0有区别吗?是否存在任何真正的速度差异,一个比另一个更好用? 最佳答案 我发现直接做更清楚“if(!$str)”..不确定'=='但'!'应该能够产生更好的优化技术,因为从未进行过类型转换,并且对字符串、数组、bool值、数字......是安全的...... 关于php-PHP中的$str==''和strlen($str)==0有区别吗?,我们在StackOverflow上找到一个类似的问题:

PHP:调用未定义的函数 mb_strlen() - 在启用了 mbstring 的自定义编译的 PHP 上

我有这个自定义编译的PHP(v5.3.3),启用了以下扩展(通过配置):./configure--prefix=/usr/local/php5.3.3--with-config-file-path=/usr/local/apache2/conf--with-apxs2=/usr/local/apache2/bin/apxs--with-bz2--with-curl=/usr/lib--with-curlwrappers--with-freetype-dir=/usr/local--with-gd=/usr/local--with-gettext--with-gmp--with-icon