【问题标题】:PHP preg_split add split for new linePHP preg_split 为新行添加拆分
【发布时间】:2019-05-14 00:26:09
【问题描述】:

我使用这个preg_split 来分割一个短语,只要后面有空格或大写字母字符的点:

$p = "This is a dummy text. And it has a new line in it \n it also has dots. Byt not";
$arr  = preg_split('/\.\s*?(?=[A-Z])/', $p);

这也可以防止段落中的最后一个点被拆分(这是我想要的)但是,我现在也需要它来拆分新行(或行)。我无法设法绕开它...... :(

【问题讨论】:

  • (\r\n|\n|\r) 如果我没记错的话
  • 嘿@tim,我需要将它整合到我当前的模式中:(
  • so .. 复制粘贴
  • 嘿@Thefourthbird,我不需要它来分割最后一个. 我需要它来分割段落内的那些点以及\n

标签: php regex preg-split


【解决方案1】:

试试这个:

$arr  = preg_split('/\.\s*?(?=[A-Z])|(\r\n|\n|\r)/', $p);

【讨论】:

  • 哦,谢谢@Peter,它运行良好! :D 谢谢!:D
【解决方案2】:

您可以使用与点后跟 0+ 个水平空白字符,然后是 1+ 个大写字符或 | Unicode 换行符序列相匹配的交替进行拆分:

\.(?=\h*[A-Z])|\R+

例如:

$p = "This is a dummy text. And it has a new line in it \n it also has dots. Byt not.";
$arr  = preg_split('/\.(?=\h*[A-Z])|\R+/', $p);

Regex demo | php demo

【讨论】:

  • 哦,谢谢@Thefourthbird,然后我会使用这个 :D 但我已经检查了一个首选答案:(
  • 完全没问题!祝你好运!
  • 嘿,一个简单的问题,我有一个我刚刚注意到的问题(我的旧模式也有这个问题),除了最后的那个点之外,点消失了。有没有办法将点保持在原处?谢谢:D
  • noooo,我的意思是像这样[0] => This is a dummy text.(同一个数组键中字符串末尾的点 - 我猜基本上是在那个点之后分割?)
  • 耶啊啊啊啊啊啊啊! :D 谢谢uuuuu 谢谢谢谢! :D
猜你喜欢
  • 2011-06-11
  • 1970-01-01
  • 2013-04-30
  • 1970-01-01
  • 1970-01-01
  • 2019-08-26
  • 2012-02-19
  • 2013-02-23
相关资源
最近更新 更多