【问题标题】:How to split a string by multiple delimiters in PHP?如何在 PHP 中通过多个分隔符拆分字符串?
【发布时间】:2010-11-29 23:32:51
【问题描述】:

"something here ; and there, oh,that's all!"

我想将它分成;,

所以处理后应该得到:

something here

and there

oh

that's all!

【问题讨论】:

  • Shore - 我认为你应该对你的一些问题标记一个已接受的答案:)
  • 并在收到答案后提出更直接的问题,而无需改变任何事情。
  • 在改变之前,这是一个很好的明确问题,我赞成它作为鼓励。现在它已经改变了,它可能仍然很好,但这是一个不同的问题。我不知道是否应该鼓励这样做。

标签: php regex string split


【解决方案1】:
$result_array = preg_split( "/[;,]/", $starting_string );

【讨论】:

    【解决方案2】:
    <?php
    
    $pattern = '/[;,]/';
    
    $string = "something here ; and there, oh,that's all!";
    
    echo '<pre>', print_r( preg_split( $pattern, $string ), 1 ), '</pre>';
    

    对更新问题的更新答案:

    <?php
    
    $pattern = '/[\x{ff0c},]/u';
    
    //$string = "something here ; and there, oh,that's all!";
    $string = 'hei,nihao,a ';
    
    
    echo '<pre>', print_r( preg_split( $pattern, $string ), 1 ), '</pre>';
    

    【讨论】:

    • 如果您希望 print_r() 返回要回显的字符串,正确的 方法是传入计算结果为 true 的第二个参数。例如print_r($array, true);
    • '&lt;pre&gt;' 后面的逗号不应该是句点吗?
    • @EvilChookie:我正在发送多个参数,我只是习惯这样做。
    • 那是什么角色?这不是分号。
    • 我只是不确定这是否是一个错字,或者这是否真的是执行回声的正确方法(显然是这样)。感谢您的澄清:P
    【解决方案3】:

    您可以使用Devin'sMeder's 方法将值放入数组中。

    为了得到你想要的输出,你可以这样做

    echo implode("\n", $resultingArray);
    

    如果你想要 HTML,也可以使用 &lt;br /&gt;

    【讨论】:

      【解决方案4】:

      split() PHP 函数允许分隔符为正则表达式。不幸的是,它已被弃用,并将在 PHP7 中删除!

      preg_split() 函数应该没问题,它返回一个数组:

      $results = preg_split('/[;,]/', $string);
      

      有一些额外的可选参数可能对您有用。

      您编辑的示例中的第一个分隔符实际上是 2 字节的 Unicode 字符吗?

      也许 preg_slit() 函数将分隔符视为三个字符,并在 unicode(中文?)“字符”的字符之间进行分割

      【讨论】:

        猜你喜欢
        • 2013-10-30
        • 2013-03-03
        • 1970-01-01
        • 2010-11-10
        • 1970-01-01
        • 2017-03-21
        • 1970-01-01
        • 1970-01-01
        • 2015-01-10
        相关资源
        最近更新 更多