PHP中获取字符串的第一行

2023-12-21

在 PHP 5.3 中有一个不错的功能 http://www.php.net/manual/en/function.strstr.php这似乎做我想做的:

strstr(input,"\n",true)

不幸的是,服务器运行 PHP 5.2.17 和可选的第三个参数strstr不可用。有没有办法在以前的版本中一行实现这一点?


对于相对较短的文本,行可以由一个(“\n”)或两个(“\r\n”)字符分隔,单行可能类似于

$line = preg_split('#\r?\n#', $input, 2)[0];

对于第一个换行之前的任何序列,即使它是空字符串,

or

$line = preg_split('#\r?\n#', ltrim($input), 2)[0];

对于第一个非空字符串。

然而,对于大文本,它可能会导致内存问题,所以在这种情况下strtok下面提到的或substr其他答案中基于的解决方案应该是首选。

当这个答案第一次写出来时,大约十年前,它有一些微妙的细微差别

  • 它太本地化了,在开篇文章之后假设行分隔符始终是单个“\n”字符,但情况并非总是如此。使用PHP_EOL不是解决方案,因为我们可以处理外部数据,不受本地系统设置的影响
  • 假设我们需要第一个非空字符串
  • 也没有办法使用explode() or preg_split()在一行中,因此有一个技巧strtok()被提议。然而不久之后,多亏了统一变量语法 https://wiki.php.net/rfc/uniform_variable_syntax,提出者尼基塔·波波夫 https://stackoverflow.com/users/385378/nikic,可以在简洁的一行中使用这些函数之一

但随着这个问题越来越受欢迎,最好在答案中涵盖所有可能的边缘情况。但由于历史原因,这里是最初的解决方案:

$str = strtok($input, "\n");

它将返回 unix 格式文本中的第一个非空行。

但是,考虑到行分隔符可能不同并且行为strtok()不是那么直接,因为“字符串开头或结尾的分隔符被忽略”,正如手册页所说 https://stackoverflow.com/a/18275378/285587对于 C 中原始的 strtok() 函数,现在我建议谨慎使用该函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP中获取字符串的第一行 的相关文章

  • 当数据验证失败时保留表单字段中的值

    我在弄清楚验证失败时如何保留用户数据时遇到问题 我对 PHP 有点陌生 所以我的逻辑可能会犯一些巨大的错误 目前 如果验证失败 所有字段都会被清除 并且 Post 数据也会消失 这是一些代码 假设用户输入无效电子邮件 我希望保留 名称 字段
  • 如何使用 phpunit 运行单个测试方法?

    我正在努力运行一个名为testSaveAndDrop在文件中escalation EscalationGroupTest php with phpunit 我尝试了以下组合 phpunit EscalationGroupTest escal
  • PHP 会话不适用于游戏

    我正在尝试模仿一款名为 SKUNK 用骰子玩 的游戏来完成一项作业 我无法让会话正常工作 这是我第一次使用 PHP 我还被告知无需会议即可完成 这是我的代码
  • 生成大随机数 php [重复]

    这个问题在这里已经有答案了 我想使用 PHP 生成一个包含 75 个字符的数字 我到处寻找 但一无所获 除了这个 http dailycoding com tools RandomNumber aspx http dailycoding c
  • posts_search 中的自定义查询

    如何使用此查询作为我的自定义搜索查询 add filter posts search my search is perfect 20 2 function my search is perfect search wp query sWord
  • 在Python中使用.replace替换多个字符[重复]

    这个问题在这里已经有答案了 所以我试图制作一个简单的程序 将一个短语解码为不同的短语 这是我现在的代码 def mRNA decode phrase newphrase phrase replace A U phrase replace T
  • 为什么我需要结束 ob_start()?

    php 文档建议我应该用 ob end flush 结束每个 ob start 我在网站的每个页面上使用一个 只是为了允许我在应用程序中的任何位置使用 firephp 日志方法 该应用程序运行良好 但我想知道是否有任何我不知道的东西可能有害
  • Symfony2 Assetic 和 Less Sourcemaps

    我不确定如何破解 assetic less 过滤器以输出源映射文件 我这里指的是LessFilterhttps github com kriswallsmith assetic blob master src Assetic Filter
  • 如何检查字符串是否为有效日期

    我有一个字符串 31 02 2010 并想检查它是否是有效日期 最好的方法是什么 我需要一个方法 如果字符串是有效日期 则返回 true 如果不是 则返回 false require date begin Date parse 31 02
  • 为什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

    给出以下代码
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • 检查 JavaScript 字符串是否为 URL

    JavaScript 有没有办法检查字符串是否是 URL 正则表达式被排除在外 因为 URL 很可能是这样写的stackoverflow 也就是说它可能没有 com www or http 如果你想检查一个字符串是否是有效的 HTTP UR
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 如何在 PHP 中从 IP 地址/国家/地区名称查找时区 ID?

    谁能告诉我 PHP 中是否有任何方法可以从 IP 地址或国家 地区名称获取时区区域 例如 亚洲 加尔各答 描述 我正在尝试根据他 她的国家 地区设置用户时区 我从他的 IP 地址获取用户所在国家 地区 但我需要该国家 地区的时区区域 例如
  • 一次播种多行 laravel 5

    我目前正在尝试为我的用户表播种 如果我像这样尝试 2 行 就会失败 如果我只使用单个数组而不是 users 数组内的 2 个数组来创建一些假数据 那么效果很好 我做错了什么 正确的方法是什么 class UserTableSeeder ex
  • 为什么 Composer 降级了我的包?

    php composer phar update这样做了 删除了 2 3 0 软件包并安装了整个 2 2 5 Zend Framework php composer phar update Loading composer reposito
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账
  • 如何使用 PHPExcel 库从 Excel 获取日期

    我正在尝试使用 PHPExcel 从 Excel 获取日期 但我没有得到日期 我得到的字符串值不是 1970 以来的秒数 我尝试过的代码是 InvDate trim excel gt getActiveSheet gt getCell B

随机推荐

  • iOS 13 中 Core Data 持久存储迁移期间发生错误

    将 XCode 更新到版本 11 后 我向 Core Data 添加了新的模型版本 并在新版本中向实体添加了新属性 使新版本处于活动状态并将新属性添加到托管对象文件中 向用户发布此版本后 它开始崩溃并显示以下消息 用于打开持久存储的托管对象
  • 文本区域内的 HTML 解码

    我在使用我构建的网站管理工具时遇到问题 它允许我编辑网站的文章 我使用 google code prettify 因为我的文章是关于 C 编程的 然后我使用 pre class prettyprint pre 标签来指定我即将开始编写 C
  • 如何防止 json.jar 中的 JSONObject 将十进制数字字符串转换为双精度

    Using JSONObject从服务器读取 json 响应 服务器返回一些十进制数 正常数字不是问题 但当存在小数形式时就会出现问题0 00068 像这样的数字0 00068会自动存储到Double对象 并且当尝试检索此类数字时 会返回该
  • 左侧省略号出现奇怪的特殊字符问题

    我有一些文件路径 我试图使用下面的代码在左侧显示省略号 ellipsis after content background color white color transparent position relative z index 2
  • VB.NET 与这种创建实例的方式等效的是什么?

    在 C 中 您可以创建这样的实例 Custom mycustomelement new Custom ElenentName My Custom Element 我想知道如何在 Visual Basic 中创建这样的实例以及这种类型的创建实
  • 使用 DATEVALUE 函数时 Excel #Value 错误

    In cell A2 I have 7 21 2014 12 44 36 PM 当我使用DATEVALUE LEFT A2 FIND A2 1 我收到错误 VALUE 当我使用LEFT A2 FIND A2 1 I get 7 21 201
  • 铁路路线和站点性能

    站点速度与Rails 应用程序的routes rb 文件中的命名空间 路由数量是否有直接关联 我正在处理一个相当大的应用程序 其中包含 30 多个不同的模型 实体 并且大多数资源都有自己的路由 路由的数量会影响内存开销 这就是为什么 Rai
  • Git over HTTP 在 Apache error_log 中生成身份验证失败

    我的 Git over HTTP s 设置遇到了非常烦人的问题 尽管它可以通过 HTTP 运行 但我在 Apache 的 error log 中收到一条错误消息 指出身份验证失败 我尝试跟踪 Apache 和 git 客户端之间的通信 似乎
  • DataStudio 和 SQL 将时间格式从数字更改为 hh:mm:ss

    我想在 Datastudio 或 SQL 中将度量格式从 float 更改为 HH MM SS 例如 Float HH MM SS 75 00 01 15 90 00 01 30 79 5 00 01 20 ETC 如果您输入的秒数适合 2
  • Python MemoryError:无法分配数组内存

    我有一个 250 MB 的 CSV 文件 需要读取大约 7000 行和大约 9000 列 每行代表一幅图像 每列代表一个像素 灰度值0 255 我从一个简单的开始np loadtxt data training nohead csv del
  • If-Block 周围的 JSLint 大括号

    在 Javascript 中 如果if表达式后面没有大括号 下面的语句放在if堵塞 那是 if foo bar baz 相当于 if foo bar baz Douglas Crockford 建议不要使用第一个 因为它会令人困惑 并且如果
  • 包含 SQL 索引提示如何影响查询性能?

    假设我在 SQL 2005 数据库中有一个表 其中包含 2 000 000 多条记录和一些索引 在查询中使用索引提示有什么优势 在查询中使用索引提示是否有缺点 首先 尝试使用 SQL Profiler 在数据库中生成几个小时内正常工作负载活
  • 使用 Postman 对 Django Web 服务进行 Http post 请求(需要登录信息)

    我想向我之前实现的 web 服务发送一个 http 请求 该服务需要用户登录 现在 我实现了一个表单页面来为我执行此操作 我需要针对每个不同的请求更改它 据我所知 Django需要 csrftoken 和 sessionid 来允许请求 不
  • 从 MySQL 中的两个表中选择数据

    我拥有的 下一个结构 表零 gt id 主要具有自动增量 gt 其他 table 1 gt id 表零 id 的外键 gt varchar 80 示例值 aahellobbb gt 一个字段 table 2 gt id 表零 id 的外键
  • Symfony 安全注销未清除 RememberMe 令牌

    将 Symfony 4 与security yaml像这样 encoders App Entity User sha256 providers public users entity class App Entity User proper
  • 即使按下设备的剪切按钮,Midlet 也不能​​关闭

    我在 J2ME 工作 我希望我的 MIDlet 必须运行无限长的时间 即使我按设备上的任何键 它也不能关闭 请帮我解决这个问题我该怎么办 如果您使用的是诺基亚手机 您可以在 Jad 文件中添加 Nokia MIDlet No Exit tr
  • 如何在 ruby​​ 中通过 SSL 调用 HTTP POST 方法?

    这是使用curl 的请求 curl XPOST H content type application json d credentials username username key key https auth api rackspace
  • 循环和科拉茨猜想

    我在循环和声明变量方面遇到问题 目前我正在制作一个关于 Collat z 猜想的程序 该程序应该检查从一定数量的 Collat z 序列中到达一个的最大步骤是什么 这是我的代码 start num int input insert a st
  • 标签是否会被弃用?

    这比任何悬而未决的灾难更令人好奇 D So the b and i 标签从网络诞生之初就已经存在了 我想 但现在我们有了CSS 而且很多人都在使用 风格化的html 标签 它们是风格标签 但它们实际上并没有那么糟糕 因为它们使我们不必制作一
  • PHP中获取字符串的第一行

    在 PHP 5 3 中有一个不错的功能 http www php net manual en function strstr php这似乎做我想做的 strstr input n true 不幸的是 服务器运行 PHP 5 2 17 和可选
Powered by Hwhale