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 从命令行启动 gui 程序,但 apache 不启动

    首先 我阅读了有类似问题的人的一些帖子 但所有答案都没有超出导出 DISPLAY 0 0 和 xauth cookies 这是我的问题 提前感谢您的宝贵时间 我开发了一个小库 它使用 OpenGL 和 GLSL 渲染货架 过去几天我将它包装
  • 发送变量后的 wsdl 服务响应,php

    我是 SOAP WSDL 函数的新手 我有一位客户从一家从事汽车测试的公司获得了 wsdl 文件 我的客户是他们的分包商 他们告诉我们上传有关车牌 类别等信息 一旦详细信息发送完毕 服务器就会做出成功或失败的响应 请您协助 浏览不同的信息
  • php中的$$是什么意思? [复制]

    这个问题在这里已经有答案了 变量后面的两个背对背 是什么意思 像这样 id 我在哪里可以找到更多相关信息 谢谢 In PHP 意味着您将给至少一名维护程序员带来多年的痛苦和折磨 请注意 您最终可能会成为维护程序员 它是一个可变变量 想象一下
  • 使用 phpdocx 下载损坏的 .docx

    我有一个项目 我们使用 phpdocx pro 在模板中生成 docx 文件 我可以很容易地将数据输入到模板中 但是当下载文件并在 MS Word 2010 中打开时 程序报告无法打开文件 因为内容存在问题 详细信息是 文件已损坏 并且无法
  • 无法在jspdf中加载多个图像

    我正在尝试加载动态生成的多个图像 我想将这些图像转换为 PDF 格式 HTML 代码如下
  • Laravel - 急切加载 Eloquent 模型的方法(而不是关系)

    就像我们可以急切加载 Eloquent 模型的关系一样 有没有办法急切加载不是 Eloquent 模型的关系方法的方法 例如 我有一个 Eloquent 模型GradeReport它有以下方法 public function totalSc
  • Facebook iFrame 应用程序 - 摆脱垂直滚动条?

    我已经转换了一个 Facebook 应用程序 http apps facebook com video preferans 从 FBML 到 iFrame 使用 PHP SDK 现在显示的垂直滚动条与我之前显示的内容数量相同 一个徽标 一个
  • 从 php 到 JavaScript 的数组

    我正在尝试使用 json 将数组列表从 php 传输到 javascript 但它不起作用 JS ajax url getProfilePhotos php type post post or get method data if you
  • 从 php 执行 bash 脚本并立即输出回网页

    我有一组 bash 和 Perl 脚本 开发在 Linux Box 上部署所需的目录结构 可选 从svn导出代码 从这个源构建一个包 这在终端上运行良好 现在 我的客户请求此流程的 Web 界面 例如 某些页面上的 创建新包 按钮将一一调用
  • PHP-docker容器中的环境变量

    我想在我的 docker 容器中显示一个环境变量 PHP 脚本如下所示 我使用 OpenShift 来启动容器 PHP 容器显示 env is 现在我更改容器的 dc 配置 oc env dc envar USER Pieter deplo
  • 合并 2 个数组并合并数字键的结果

    我有 2 个数组 我希望通过每个数字键将其中合并 分组在一起 例如 Array1 2009 gt 131 2008 gt 940 2007 gt 176 2006 gt 1 Array2 2008 gt 9 2007 gt 3 我希望输出是
  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • 使用 yum 和 pear 安装 php-soap 均失败

    我正在尝试在 Centos 6 4 服务器上安装 PHP 的 SOAP 扩展 我对包管理器 从 CLI 安装包并在 PHP 中配置它们相当不熟悉 我相当有能力管理 php ini 和其他 PHP 配置文件 soap ini 等 我尝试使用以
  • 使(文本到图像)图像具有一定的宽度但无限的长度?

    我有下面的代码 可以用大量文本生成图像 我希望该图像的宽度为 700 像素 我还希望它保留字符串所具有的段落结构 该字符串来自 MySQL 数据库 我怎样才能实现这一点 font 2 width imagefontwidth font st
  • ACL授权失败后ZF3重定向

    我有一个带有 ACL 的新 ZF3 应用程序 现在 我需要在未经授权的访问的情况下重定向到错误页面 例如 403 我认为最好的方法是触发一个事件 然后捕获它 但我失败了 全部都在我的用户模块中Module php 摘录 namespace
  • PHP switch case 在 case 中存在多个值

    我有一个变量保存值 每周 每月 季度 和 年度 还有另一个变量保存值从 1 到 10 switch var2 case 1 var3 Weekly break case 2 var3 Weekly break case 3 var3 Mon
  • PHP 共享标头而不使用服务器端脚本?

    到目前为止我总是通过 PHP 解决简单的问题 您有一个包含页眉 菜单 页脚和内容字段的网站 每个页面的页眉 菜单和页脚通常是相同的 在没有 PHP 或任何其他服务器端语言的情况下 如何使页眉 菜单和页脚数据仅存在于一个文件中 例如 您不会有
  • 使用 PHP 中的 GD 库在图像上绘图

    我创建了一个代码来生成随机图案图像 它创建一个具有给定宽度和高度的图像 并用 40x40 像素的小矩形填充它 这是我的代码
  • 如何展平解析树并存储在字符串中以进行进一步的字符串操作 python nltk

    我正在尝试从树结构中获取扁平树 如下所示 我想将整个树放在一个字符串中 就像没有检测到坏树错误一样 S NP SBJ NP DT The JJ high JJ seven day PP IN of NP DT the CD 400 NNS
  • 禁用 WooCommerce 手动/编辑订单的电子邮件通知

    需要 WooCommerce 专业知识 我需要禁用手动创建的订单的电子邮件通知 我必须使用处理状态 由于处理订单状态的自定义挂钩 我无法创建自定义状态 理想情况下 手动订单页面中可以勾选一个复选框 勾选后 它将禁止在每种状态下向客户发送电子

随机推荐

  • 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