每行一句的正则表达式


regular expressions for one sentence per line

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

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

到目前为止,我想到的表达方式是:

 (.+?)'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);

然而,数组中有一个对象总是空的,我正试图找到一种方法来消除它。

提前感谢。

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

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

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

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

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

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

有各种类型的换行符。在HTML表单上下文中,您通常会收到行结尾的CR LF。如果使用'R,则可以使用哑爆炸,但正则表达式可以捕获所有变体。因此'r'n'n'r等将由处理

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

preg_split()相当于PHPs explode()。所以您不需要使用preg_match_all