【问题标题】:Catch a word into quotes using preg_replace使用 preg_replace 将单词添加到引号中
【发布时间】:2013-07-02 15:21:02
【问题描述】:

我有一个包含许多字符的字符串,我需要从中获取数据。 首先,我确实通过';'爆炸了,现在我有一个数组,并且每一行我都有一个单词到引号中。

我想删除所有,少这个词成引号。我知道用preg_match更容易得到这些词,但是怎么成数组,存起来再过一遍数组,我想直接用preg_replace清理一下。

$array = explode(';', $string);

//36 => string 's:7:"trans_1"' (length=13)
//37 => string 's:3:"104"' (length=9)
//38 => string 's:5:"addup"' (length=11)
//39 => string 's:1:"0"' (length=7)

$array = preg_replace('!   !i', '', $array);

我想获得:

//36 => string 'trans_1' (length=6)
//37 => string '104' (length=3)
//38 => string 'addup' (length=5)
//39 => string '0' (length=1)

我尝试了不同的东西,但我无法去掉引号外的字母。

【问题讨论】:

    标签: php regex


    【解决方案1】:

    你可以试试

    preg_replace('!.*"([^"]*)".*!i', '\1', $array);
    

    \1指的是第一个捕获的组!

    【讨论】:

    • 您甚至可以使用 preg_match 来避免在第一种情况下爆炸字符串
    • @sebasparola 你也可以unserialize() 数据吗?看起来您正在尝试解析来自 php 函数 serialize() 的数据
    • @chrislondon 哇,你是对的,unserialize() 无需使用正则表达式即可工作,救了我的命 jej。我应该在某个地方对此发表一些评论吗??
    【解决方案2】:

    虽然这不是您问题的直接答案,但它可以解决您的问题。您正在查看的数据来自 php 函数 serialize() 以从您需要使用 php 函数 unserialize() 的字符串中检索数据。

    $data = unserialize($string);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      • 2020-03-08
      • 2013-03-09
      • 2020-09-24
      • 2020-03-02
      • 1970-01-01
      相关资源
      最近更新 更多