使用preg_replace将单词引入引号

时间:2013-07-04 14:56:44

标签: php regex

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

我想删除所有内容,而不是将这个单词删除为引号。我知道使用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)

我尝试了不同的东西,但我无法摆脱引号之外的字母。

2 个答案:

答案 0 :(得分:2)

你可以尝试

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

\1指的是第一个被捕获的群体!

答案 1 :(得分:2)

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

$data = unserialize($string);