【问题标题】:preg_split string with negative look-behind assertion phppreg_split 字符串与否定后向断言 php
【发布时间】:2014-03-25 07:03:13
【问题描述】:

这是我拥有的数组

 Array
    (

        [0] =>                  string@:abc:-------:abc
        [1] =>                  string@:abc:xyz-----:abc
        [2] =>               string1:string2:abc:xyz-----:abc                               
        [3] =>               string2:string3:abc:xyz-----:abc            
     )

我想像这样拆分这些偏移量

Array
(
    [0] => Array
        (
            [1st] =>                  String@
            [2nd] => abc
            [3rd] => ------
            [4th] => abc
        )

   [1] => Array
        (
            [1st] =>                  String@
            [2nd] => abc
            [3rd] => xyz
            [4th] => abc
        )

    [2] => Array
        (
            [1st] =>                  String1
            [2nd] => string2
            [3rd] => abc
            [4th] => xyz
            [5th]=> abc
        )

    [3] => Array
        (
            [1st] =>                  String2
            [2nd] => string3
            [3rd] => abc
            [4th] => xyz
            [5th]=> abc
        )

)

我的问题是在 2,3 数组 string1 和 string2 中的差异偏移量我想要这样

[0] => Array
        (
            [1st] =>     String1:string2
            [2rd] => abc
            [3th] => xyz
            [4th]=> abc
        )
  [1] => Array
        (
            [1st] =>     String2:string3
            [2rd] => abc
            [3th] => xyz
            [4th]=> abc
        )

但是只有两个特殊的字符@nd:如果在string1中@不存在我想从开始分割,如果@不存在我想在string2之后开始 请帮忙

【问题讨论】:

  • 你有什么问题? IE。您遇到问题的代码在哪里?
  • 我的问题是我有一个 string= "string1:string2:abc:fd-----:abc";我想将其拆分为:char 但不是在 string1 之后,我想在 string2 之后拆分

标签: php regex string split preg-match


【解决方案1】:

您可能可以使用这种消极的向后看:

$arr = preg_split('/(?<!(?:string1|string2)):/', 'string1:string2:abc:xyz-----:abc');
var_dump($arr);

输出:

array(4) {
  [0]=>
  string(15) "string1:string2"
  [1]=>
  string(3) "abc"
  [2]=>
  string(8) "xyz-----"
  [3]=>
  string(3) "abc"
}

【讨论】:

  • thnku anubhava,它正在工作,但在 ,$arr = preg_split('/(?
  • 您需要正确澄清您的问题。什么情况下:不应该在split中使用。
  • 你能告诉我如何将两个参数一起传递,而你只传递一个 string1,我需要传递两个 string1 nd string2 然后它会有所帮助
  • 您的评论我不清楚。您的问题发生如此多的反对票是有原因的。我要求您正确澄清它以获得好的答案。
  • 数组 ( [0] => string@:abc:-------:abc [1] => string@:abc:xyz-----:abc [2] => string1:string2:abc:xyz-----:abc [3] => string2:string3:abc:xyz-----:abc 现在如何在 preg split 中解决这个问题 你匹配这个字符串: ,但是如果数组的下一个偏移量中有另一个字符串,它不会根据你的preg_split条件拆分3个偏移量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-21
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多