每行一个句子的正则表达式

时间:2012-08-03 18:04:01

标签: php regex

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

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

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

 (.+?)\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个对象总是为空,我正试图找到一种摆脱它的方法。

先谢谢。

3 个答案:

答案 0 :(得分:1)

您不需要正则表达式,只需使用explode(),就像这样:

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

现在,用户$input的每一行都是$lines中的单个数组条目。

答案 1 :(得分:1)

这将完成并消除数组开头和结尾的空行

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

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

答案 2 :(得分:0)

有各种类型的换行符。在HTML表单上下文中,您通常会收到CR LF行结尾。如果你使用\R,那么正在进行愚蠢的爆炸,但正则表达式将捕获所有变体。因此,\r\n\n\r和其他人将由以下人员处理:

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

preg_split()相当于PHPs explode()。因此,您无需使用preg_match_all