【问题标题】:How to explode the string back from the second or third string delimiter?如何将字符串从第二个或第三个字符串分隔符分解回来?
【发布时间】:2018-05-30 15:19:21
【问题描述】:

如何使用explode()从这个 800-555-5555 获取 800-555?

这是一个很好的例子:

$rawPhoneNumber = "800-555-5555"; 

$phoneChunks = explode("-", $rawPhoneNumber);
First chunk = $phoneChunks[0]; //800
Second chunk = $phoneChunks[1]; //555
Third Chunk chunk = $phoneChunks[2]; //5555

但是我怎样才能得到 800-555?

好的,我明白了,这里需要更多评论...所以,这只是一个示例...实际上,我在字符串分隔符中添加了一个单词(现在是 $word),我的字符串是一篇完整的文章...我想要那个,如果这个词第二次发表在文章中,用str_word_count() 算,文本中有多少个字符到第二个(或第三个,如果我想要那个)$word...

所以我想要那个,我得到从第二个“命中”到后面的字符串。

好的,这里有一个更明显的例子:

$text = oh my god, thank you the lot of downvotes, geniuses *.*
$explode = explode(",", $text);
$whatiwant = $explode?? // I WANT THE STRING FROM THE SECOND "," TO BACK

所以我想要那个$whatiwant = oh my god, thank you the lot of downvotes

【问题讨论】:

  • 您可以简单地将 800 和 555 用连字符连接起来,或者您需要使用正则表达式而不是 explode() 方法。

标签: php explode


【解决方案1】:

Implodeexplodearray_slice
我使用array_slice,因为这使函数更加动态。

现在您只需设置 $items 即可获得所需的项目数。
如果你设置一个负值,它会倒数。

$delim = ",";
$items =2;
$text = "oh my god, thank you the lot of downvotes, geniuses *.*";
$whatiwant = implode($delim, array_slice(explode($delim, $text),0,$items));
Echo $whatiwant;

https://3v4l.org/KNSC4

您还可以有一个起始变量来使起始位置动态化。

https://3v4l.org/XD0NV

【讨论】:

    【解决方案2】:

    对已经生成的数组的索引进行连接是一种简单的方法。

    示例代码

    echo $phoneChunks[0]."-".$phoneChunks[1];
    

    【讨论】:

    • 对不起,有错字:P
    【解决方案3】:

    这对我有用:

    $rawPhoneNumber = "800-555-5555";
    
    $phoneChunks = explode("-", $rawPhoneNumber);
    $first_chunk = $phoneChunks[0]; //800
    $second_chunk = $phoneChunks[1]; //555
    $third_chunk_chunk = $phoneChunks[2]; //5555
    
    $portion_array = array($first_chunk, $second_chunk);
    echo implode("-",$portion_array);
    

    输出:

    800-555
    

    【讨论】:

      猜你喜欢
      • 2018-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-01
      • 1970-01-01
      相关资源
      最近更新 更多