当前位置: 首页 > 面试题库 >

PHP中字符串的最大长度是多少?

岑叶秋
2023-03-14
问题内容

那么$variablePHP中的大小可以达到多少呢?我已经尝试过测试,但是我不确定系统内存是否足够(〜2gb)。我认为必须有某种限制。字符串太大时会发生什么?它是串联的,还是PHP抛出异常?


问题答案:

http://php.net/manual/en/language.types.string.php说:

注意:自PHP 7.0.0起,对64位版本中的字符串长度没有特殊限制。在32位版本和较早版本中,字符串最大可以为2GB(最大2147483647字节)

在PHP 5.x中,字符串被限制为2 31 -1个字节,因为内部代码将长度记录为带符号的32位整数。

您可以输入整个文件的内容,例如使用 file_get_contents()

但是,PHP脚本在给定脚本执行中可以为所有变量分配的总内存中有限制,因此这实际上也限制了单个字符串变量的长度。

此限制是memory_limitphp.ini配置文件中的指令。内存限制在PHP 5.2中默认为128MB,在早期版本中为8MB。

如果您未在php.ini文件中指定内存限制,它将使用默认值,该默认值将编译到PHP二进制文件中。从理论上讲,您可以修改源代码并重建PHP以更改此默认值。

如果您-1在php.ini文件中将内存限制指定为内存限制,它将停止检查并允许脚本使用操作系统分配的内存。这仍然是实际的限制,但取决于系统资源和体系结构。

来自@ c2的评论:

这是一个测试:

<?php

// limit memory usage to 1MB 
ini_set('memory_limit', 1024*1024);

// initially, PHP seems to allocate 768KB for basic operation
printf("memory: %d\n",  memory_get_usage(true));

$str = str_repeat('a',  255*1024);
echo "Allocated string of 255KB\n";

// now we have allocated all of the 1MB of memory allowed
printf("memory: %d\n",  memory_get_usage(true));

// going over the limit causes a fatal error, so no output follows
$str = str_repeat('a',  256*1024);
echo "Allocated string of 256KB\n";
printf("memory: %d\n",  memory_get_usage(true));


 类似资料:
  • 问题内容: 如果与环境无关,那么python字符串中理论上最大的字符数是多少? 另外,如果它与版本号不同,我想在python 2.5.2中知道它 问题答案: 使用64位Python安装和(例如)64 GB的内存,大约63 GB的Python 2字符串应该是非常可行的(如果不是最快的话)。如果您可以将内存升级到更大的程度(当然,这将花费您一臂之力和一条腿),则最大可行字符串应成比例地变长。(我不建议

  • 问题内容: 我想将这个大字符串分成几行,每行中的内容不应超过MAX_LINE_LENGTH个字符。 到目前为止我尝试过的 输出: 它造成 断字 。我不要这个 而不是我想要这样的输出: 添加了另一个条件: 如果单词长度大于MAX_LINE_LENGTH,则该单词应拆分。 解决方案应该没有外部罐子的帮助。 问题答案: 只需逐个单词地遍历字符串,并在单词超过限制时中断。 我只是以徒手的方式输入了该内容,

  • 本文向大家介绍如何获取PHP数组中最长字符串的长度,包括了如何获取PHP数组中最长字符串的长度的使用技巧和注意事项,需要的朋友参考一下 array_map函数可用于获取长度,而max函数可用于获取最长字符串的长度。 以下是相同的代码示例- 示例 输出结果 这将产生以下输出-

  • 问题内容: 我有一个长度为141个字符的字符串。使用以下代码,如果字符串大于或小于140,我有一条语句返回一条消息。 我在$ message上使用了var_dump,它显示的字符串是。这是我的问题:当我将语句的编号更改为和时,尽管字符串大于131,它仍然返回第一条消息。 无论我使用的数字少于141,我总是得到“没有比赛”。回到我身边。 问题答案: 尝试使用通用语法:

  • 本文向大家介绍网址(URL)支持的最大长度是多少?最大支持多少个字符?,包括了网址(URL)支持的最大长度是多少?最大支持多少个字符?的使用技巧和注意事项,需要的朋友参考一下 今天在测试Email Ticket的时候发现在进行Mark as Read/Unread操作时,请求是通过GET方式进行的。URL中列出了所有参与该操作的Ticket Id。于是,我想起GET请求是有最大长度限制的。遂输入超

  • 问题内容: 我正在构建一个包含数据的SQL语句,并且想知道是否会破坏Oracle 10g中的某些最大语句长度。 该语句大约为3 200 000字节,无法拆分,并且必须整体上可解析。 在我以这种方式投入太多时间之前,我想知道我是否会受到此声明的限制。 我正在使用SQL Developer,但我认为如果服务器可以做到,SQL Developer也可以。 问题答案: 没有固定号码。请参见“逻辑数据库限制