草庐IT

mb_substr

全部标签

PHP substr 在某个char之后,substr + strpos的优雅解决方案?

假设我想返回一些needlechar'x'之后的所有字符,来自:$source_str="Tuexhelobabe".通常我会这样做:if(($x_pos=strpos($source_str,'x'))!==FALSE)$source_str=substr($source_str,$x_pos+1);你知道更好/更聪明(更优雅的方式)来做到这一点吗?不使用正则表达式不会使它更优雅,也可能更慢。很遗憾我们不能这样做:$source_str=substr(source_str,strpos(source_str,'x')+1);因为当'x'未找到时strpos返回FALSE(而不是像JS

php - PHP函数iconv_strlen、mb_strlen和strlen有什么区别?

iconv_strlen、mb_strlen和strlen函数有什么区别?它们在现实世界中的用途是什么? 最佳答案 strlen()与mb_strlen()的区别在于,后者支持多字节字符。这意味着,这是真实的字符数。第一个假定字符串始终为ascii,这也意味着它始终以字节为单位返回大小(在处理二进制“字符串”时非常有用)。据我所知,iconv_strlen()与mb_strlen()非常相似,但与mb_strlen()相比,它在错误的字符序列上失败,那只是忽略了它们。它使用iconv-library(显然;))。

php - PHP函数iconv_strlen、mb_strlen和strlen有什么区别?

iconv_strlen、mb_strlen和strlen函数有什么区别?它们在现实世界中的用途是什么? 最佳答案 strlen()与mb_strlen()的区别在于,后者支持多字节字符。这意味着,这是真实的字符数。第一个假定字符串始终为ascii,这也意味着它始终以字节为单位返回大小(在处理二进制“字符串”时非常有用)。据我所知,iconv_strlen()与mb_strlen()非常相似,但与mb_strlen()相比,它在错误的字符序列上失败,那只是忽略了它们。它使用iconv-library(显然;))。

PHP:是否可以正确地对 UTF-8 字符串进行 SUBSTR?

我有(在SQLite数据库中)以下字符串:Лампаввытяжкенакухнеменяется,начинаясвытаскиваниябелогоштырькасправа。PHP使用print正确显示了该字符串。我只想获取该字符串的前50个字符,即Лампавытяжкенакухнеменяется,начинаясвытас.我尝试过同时使用substr和mb_substr,得到Лампаввытяжкенакухнеме�,即只有28个字符。在阅读了这里和其他地方关于mbstring的问题之后,我意识到这实际上是一个50字节的字符串(22个俄语字符=44个字节加5个空格加

PHP:是否可以正确地对 UTF-8 字符串进行 SUBSTR?

我有(在SQLite数据库中)以下字符串:Лампаввытяжкенакухнеменяется,начинаясвытаскиваниябелогоштырькасправа。PHP使用print正确显示了该字符串。我只想获取该字符串的前50个字符,即Лампавытяжкенакухнеменяется,начинаясвытас.我尝试过同时使用substr和mb_substr,得到Лампаввытяжкенакухнеме�,即只有28个字符。在阅读了这里和其他地方关于mbstring的问题之后,我意识到这实际上是一个50字节的字符串(22个俄语字符=44个字节加5个空格加

php - 为什么 mb_strpos() 比 strpos() 慢得多?

我批评过ananswer在查找子字符串偏移量时建议使用preg_match而不是===以避免类型不匹配。然而,后来答案的作者发现preg_match实际上比多字节操作mb_strpos显着快。普通strpos比这两个函数都快,但当然不能处理多字节字符串。我知道mb_strpos需要比strpos做更多。但是,如果正则表达式可以几乎和strpos一样快,那么mb_strpos到底是为了什么而花费这么多时间呢?我强烈怀疑这是一个优化错误。例如,PHP扩展是否会比其native函数慢?mb_strpos($str,"颜色",0,"GBK"):15.988190889(89%)preg_mat

php - 为什么 mb_strpos() 比 strpos() 慢得多?

我批评过ananswer在查找子字符串偏移量时建议使用preg_match而不是===以避免类型不匹配。然而,后来答案的作者发现preg_match实际上比多字节操作mb_strpos显着快。普通strpos比这两个函数都快,但当然不能处理多字节字符串。我知道mb_strpos需要比strpos做更多。但是,如果正则表达式可以几乎和strpos一样快,那么mb_strpos到底是为了什么而花费这么多时间呢?我强烈怀疑这是一个优化错误。例如,PHP扩展是否会比其native函数慢?mb_strpos($str,"颜色",0,"GBK"):15.988190889(89%)preg_mat

php - 如何在 PHP 中上传超过 500MB 的大文件

这个问题在这里已经有了答案:uploadlargefilesusingphp,apache(5个答案)关闭9年前。我用PHP做了一个上传页面,但是我不知道为什么页面不能上传大于500MB的文件,这是我第一次尝试上传这么大的东西,我改变了PHP.INI中的所有配置(post_max_size=700M,upload_max_filesize=600M,max_execution_time=300)。上传代码如下if(isset($_FILES['upload'])&&!empty($_FILES['upload']['name'])){move_uploaded_file($_FILES

php - 如何在 PHP 中上传超过 500MB 的大文件

这个问题在这里已经有了答案:uploadlargefilesusingphp,apache(5个答案)关闭9年前。我用PHP做了一个上传页面,但是我不知道为什么页面不能上传大于500MB的文件,这是我第一次尝试上传这么大的东西,我改变了PHP.INI中的所有配置(post_max_size=700M,upload_max_filesize=600M,max_execution_time=300)。上传代码如下if(isset($_FILES['upload'])&&!empty($_FILES['upload']['name'])){move_uploaded_file($_FILES

PHP 函数 substr() 错误

当我使用substr()时,我在末尾得到一个奇怪的字符$articleText=substr($articleText,0,500);我有500个字符的输出和...我该如何解决这个问题?是不是编码问题?我的语言是希腊语。 最佳答案 substr使用字节计数,而不是字符。希腊语可能意味着您正在使用一些多字节编码,例如UTF-8——并且按字节计数对那些不太好。也许使用mb_substr可以帮忙,这里:mb_*专门为多字节编码创建了函数。 关于PHP函数substr()错误,我们在StackO