Php 使用preg_replace将一个单词捕获到引号中

Php 使用preg_replace将一个单词捕获到引号中,php,regex,Php,Regex,我有一个包含许多字符的字符串,我需要从中获取数据。 首先,我确实在“;”处爆炸了,现在我有了一个数组,每行都有一个单词加引号 我想删除所有,更少的这个词到引号。我知道用preg_匹配更容易获得这些单词,但是如何放入数组,为了保存起来再次遍历数组,我想直接用preg_替换它 $array = explode(';', $string); //36 => string 's:7:"trans_1"' (length=13) //37 => string 's:3:"104"' (len

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

我想删除所有,更少的这个词到引号。我知道用preg_匹配更容易获得这些单词,但是如何放入数组,为了保存起来再次遍历数组,我想直接用preg_替换它

$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)
我尝试了不同的方法,但我无法去掉引号之外的字母。

你可以试试

preg_replace('!.*"([^"]*)".*!i', '\1', $array);
\1
指第一个捕获的组

你可以试试

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

\1
指第一个捕获的组

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


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


您甚至可以使用preg_match来避免在第一次使用时爆炸字符串case@sebasparola你能不能只
unserialize()
数据?看起来您正在尝试解析来自php函数的数据
serialize()
@chrislondon哇,您说得对,unserialize()无需使用regexp即可工作,拯救了我的生命。我应该在某个地方对此做些评论吗?你甚至可以使用preg_match来避免在第一次爆炸字符串case@sebasparola你能不能只
unserialize()
数据?看起来您正在尝试解析来自php函数的数据
serialize()
@chrislondon哇,您说得对,unserialize()无需使用regexp即可工作,拯救了我的生命。我应该在某处对此做些评论吗??