-2

我正在尝试获取文本区域值并通过正则表达式运行它以将其拆分为行。

所以如果有人写了一行然后输入另一行并输入 i 将有一个数组,每个数组值的每一行

到目前为止我想出的表达是:

 (.+?)\n|\G(.*)

这就是我使用它的方式(来自我用来测试表达式的网站http://myregextester.com/

 $sourcestring="
 this is a sentense yeaa
 interesting sentense
 yet another sentese
 ";
 preg_match_all('/(.+?)\n|\G(.*)/',$sourcestring,$matches);
 echo "<pre>".print_r($matches,true);

但是,数组中有 1 个对象始终为空,我正试图找到一种方法来摆脱它。

提前致谢。

4

3 回答 3

1

您不需要正则表达式,只需使用explode(),如下所示:

$lines = explode( "\n",  trim( $input));

现在用户的每一行都$input将是$lines.

于 2012-08-03T18:05:20.007 回答
1

这将完成并摆脱数组开头和结尾的空行

explode("\n", trim($sourcestring));

参见示例:http: //viper-7.com/pNqtvV

于 2012-08-03T18:08:04.913 回答
0

有各种类型的换行符。在 HTML 表单上下文中,您通常会收到CR LF行尾。一个愚蠢的爆炸会做,但如果你使用正则表达式会捕获所有变化\R。因此\r\nand \nor \rand others 将由以下人员处理:

 $lines = preg_split(':\R:', $text);

preg_split()相当于 PHP 的explode()。所以你不需要使用preg_match_all.

于 2012-08-03T18:09:18.637 回答