首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在PHP中迭代字符串中的每一行

在PHP中迭代字符串中的每一行
EN

Stack Overflow用户
提问于 2009-09-22 21:27:48
回答 3查看 153.5K关注 0票数 147

我有一个表单,允许用户上传文本文件或将文件内容复制/粘贴到文本区域中。我可以很容易地区分这两个变量,并将它们输入的任何一个放入字符串变量中,但从那里我该怎么做呢?

我需要迭代字符串的每一行(最好不要担心不同机器上的换行符),确保它只有一个标记(没有空格、制表符、逗号等),清理数据,然后根据所有行生成SQL查询。

我是一个相当好的程序员,所以我知道如何做的一般想法,但我已经很久没有使用PHP了,我觉得我在搜索错误的东西,因此得到了无用的信息。我遇到的关键问题是,我想逐行读取字符串的内容。如果它是一个文件,那就很容易了。

我主要在寻找有用的PHP函数,而不是如何实现的算法。有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-22 21:33:50

对包含文本的变量执行preg_split,并遍历返回的数组:

代码语言:javascript
复制
foreach(preg_split("/((\r?\n)|(\r\n?))/", $subject) as $line){
    // do stuff with $line
} 
票数 208
EN

Stack Overflow用户

发布于 2012-12-25 18:55:46

如果您需要在不同的系统中处理换行符,您可以简单地使用PHP预定义常量PHP_EOL (http://php.net/manual/en/reserved.constants.php)并简单地使用explode来避免正则表达式引擎的开销。

代码语言:javascript
复制
$lines = explode(PHP_EOL, $subject);
票数 100
EN

Stack Overflow用户

发布于 2013-07-12 18:45:17

它过于复杂和丑陋,但在我看来,这是一条可行的道路:

代码语言:javascript
复制
$fp = fopen("php://memory", 'r+');
fputs($fp, $data);
rewind($fp);
while($line = fgets($fp)){
  // deal with $line
}
fclose($fp);
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1462720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档