【问题标题】:Explode a string after 5 spaces and 2 new lines in a string in PHP在PHP中的一个字符串中的5个空格和2个新行之后分解一个字符串
【发布时间】:2017-09-01 04:08:43
【问题描述】:

我试图在字符串中找到 2 个新行和 5 个或更多空格后严格分解一个字符串。但如果发现少于 5 个空格或 2 个新行,则不应爆炸。

到目前为止,我已经尝试过preg_split("/\n\n\s\s\s\s\s*/"),但没有成功。

另外,我可以使用explode功能来达到这个目的吗?

【问题讨论】:

  • 您能否提供一个与您想要的条件匹配的字符串示例
  • 如何在此处插入我的字符串?我不知道该怎么做。
  • 我在这里粘贴了我的行,它删除了所有的空格和新行...
  • var_dump(preg_split("/[\r\n]{2}[\s]{5}/", $myString));
  • 如果建议的评论没有解决您的问题,您可以编辑问题并将字符串插入为代码示例

标签: php regex extract explode preg-split


【解决方案1】:

我试图在字符串中找到 2 个新行和 5 个或更多空格后严格分解字符串。

如果“新行”是指\n,十进制10 char,“空格”是指常规空格,则需要使用

$chunks = preg_split('~\n{2} {5,}~', $input);

\n{2} 正好匹配 2 个换行符(注意前面可能有更多), {5,} 匹配 5 个或更多常规空格。

换行符可以用\r\n\r\n表示。然后,您可以使用速记\R linbreak 类

$chunks = preg_split('~\R{2} {5,}~', $input);

如果您想匹配任意 5 个以上的水平空格,请将空格替换为 \h'~\R{2}\h{5,}~'

最后,如果您想确保在 2 个换行符之前没有换行符,请在开头添加一个否定的lookbehind:'~(?<![\r\n])\R{2}\h{5,}~'

【讨论】:

    猜你喜欢
    • 2020-03-04
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2015-04-14
    • 2014-12-17
    • 1970-01-01
    相关资源
    最近更新 更多