php分割半宽度&;全句

php分割半宽度&;全句,php,regex,Php,Regex,我需要在每个句号、感叹号和问号处将文本拆分成一个数组 带有全宽句号和感叹号的示例: $string = "日本語を勉強しているみんなを応援したいです。一緒に頑張りましょう!"; 我正在寻找以下输出: Array ( [0] => 日本語を勉強しているみんなを応援したいです。 [1] => 一緒に頑張りましょう! ) 我需要相同的代码来处理半宽度 混合全宽和半宽的示例: $string=“嗨,我是鲍勃!很高兴认识你。日本語を勉強しています。你明白我的意思吗 输出:

我需要在每个句号、感叹号和问号处将文本拆分成一个数组

带有全宽句号和感叹号的示例:

$string = "日本語を勉強しているみんなを応援したいです。一緒に頑張りましょう!";
我正在寻找以下输出:

Array ( 
    [0] => 日本語を勉強しているみんなを応援したいです。
    [1] => 一緒に頑張りましょう! )
我需要相同的代码来处理半宽度

混合全宽和半宽的示例: $string=“嗨,我是鲍勃!很高兴认识你。日本語を勉強しています。你明白我的意思吗

输出:

Array ( 
    [0] => Hi.
    [1] => I am Bob!
    [2] => Nice to meet you.
    [3] => 日本語を勉強しています。
    [4] => Do you understand me? )
我对正则表达式很差劲,既找不出解决方案,也找不到解决方案

我试过:

$string = preg_split('(.*?[。?!])', $string);

首先,您忘记了分隔符(通常是斜杠)

您可以在
\pP
上拆分(unicode标点符号-记住
u
修饰符表示unicode):

您可以看到其余的特殊unicode字符

正则表达式尸检

Array
(
    [0] => Hi.
    [1] => I am Bob!
    [2] => Nice to meet you.
    [3] => 日本語を勉強しています。
    [4] => Do you understand me?
)
  • /
    -开始分隔符-它也必须位于修饰符之前的末尾

  • (?首先,您忘记了分隔符(通常是斜杠)

    您可以在
    \pP
    上拆分(unicode标点符号-记住
    u
    修饰符表示unicode):

    您可以看到其他特殊unicode字符

    正则表达式尸检

    Array
    (
        [0] => Hi.
        [1] => I am Bob!
        [2] => Nice to meet you.
        [3] => 日本語を勉強しています。
        [4] => Do you understand me?
    )
    
    • /
      -开始分隔符-它也必须位于修饰符之前的末尾

    • (?我看不出全宽和半宽在PHP需要如何处理字符串方面有什么不同。PHP看不到。和。作为相同的或!和!。与?和?相同。如果它们都在列表分隔符中,则没有区别。我看不出全宽和半宽在PHP需要如何处理字符串方面有什么不同string.PHP看不到。和。与或!和!相同。与?和?相同。如果它们都在列表分隔符中,则没有区别。h2ooooooo,谢谢。不过,这似乎也会在逗号处拆分字符串。我只查找以标点符号结尾的句子。在本例中,是。?和!。示例:非常好的答案。比我开始写的是:)+1在你为所有unicode字符提供的链接上,我注意到最后的标点是Pf。我如何包含它?我尝试了$string=preg_split('/(?@BryseMeijer)将正则表达式改为
      /(?在这里我们包含一个负数lookback。)。似乎
      Pf
      不包含常规标点。\p{Pf根本不起作用。您的负后向示例全宽中断。我将其更改为
      /(?。这满足了我原来的问题。非常感谢。h2ooooooo,谢谢。不过,这似乎也会在逗号处拆分字符串。我只寻找以句子结尾的标点符号。在本例中是。?和!。示例:回答得很好。比我开始写的要聪明得多:)+1在您为所有unicode字符提供的链接中,我注意到最后的标点是Pf。我如何包含它?我尝试了$string=preg_split('/(?@BryseMeijer)将正则表达式更改为
      /(?其中包含一个负数lookback.。似乎
      Pf
      不包含常规标点。\p{Pf}一点也不管用。您的负向后看示例全宽中断。我将其更改为
      /(?。这满足了我原来的问题。非常感谢。
      
      Array
      (
          [0] => 日本語を勉強しているみんなを応援したいです。
          [1] => 一緒に頑張りましょう!
      )
      
      Array
      (
          [0] => This is my sentence,
          [1] => and it is very nice.
      )
      
      /(?<![,、;;"”\'’``])(?<=\pP)\s*/u