在 PHP 中获取字符串的第一行
在 PHP 5.3 中有一个不错的函数,它似乎可以做我想要的:
strstr(input,"\n",true)
不幸的是,服务器运行 PHP 5.2.17,可选的第三个参数不可用。有没有办法在以前的版本中一行实现此目的?strstr
在 PHP 5.3 中有一个不错的函数,它似乎可以做我想要的:
strstr(input,"\n",true)
不幸的是,服务器运行 PHP 5.2.17,可选的第三个参数不可用。有没有办法在以前的版本中一行实现此目的?strstr
对于相对较短的文本,其中行可以由一个(“\n”)或两个(“\r\n”)字符分隔,单行可以是这样的
$line = preg_split('#\r?\n#', $input, 2)[0];
对于第一个换行符之前的任何序列,即使它是空字符串,
或
$line = preg_split('#\r?\n#', ltrim($input), 2)[0];
对于第一个非空字符串。
但是,对于大型文本,它可能会导致内存问题,因此在这种情况下,下面提到的或其他答案中基于的解决方案应该是首选。strtok
substr
大约十年前,当这个答案首次被写出来时,它有一些微妙的细微差别。
PHP_EOL
explode()
preg_split()
strtok()
但是随着这个问题越来越受欢迎,最好在答案中涵盖所有可能的边缘情况。但出于历史原因,这里是原始的解决方案:
$str = strtok($input, "\n");
这将返回 unix 格式的文本中的第一个非空行。
但是,鉴于行分隔符可能不同,并且 的行为不是那么直接,因为“字符串开头或结尾处的分隔符字符被忽略”,因为它说的是C中原始strtok()函数的手册页,现在我建议谨慎使用此函数。strtok()
已经很晚了,但你可以使用爆炸。
<?php
$lines=explode("\n", $string);
echo $lines['0'];
?>