只查找字符串PHP

时间:2016-02-01 22:18:11

标签: php regex preg-match

我有一个变量$ string,里面有以下布局:

image: "http://web.com/files/images/442873_large.jpg",
thumb: "http://static.web.com/scripts/image.php/60x60/402813.jpg",
mp3: "http://web.com/files/clip/6240/23121376.mp3",
waveform: "http://web.com/files/wave/23121376-wf.png"

我如何找到并设置拇指的url:到一个新变量,即:

$thumb = 'http://static.web.com/scripts/image.php/44x44/442873.jpg';

但每次运行脚本时,拇指网址(以及所有值)都会有所不同(因此我无法匹配实际网址的内容)。

基本上我需要使用哪些功能/功能:

1)搜索整个字符串以获取拇指:

2)选择以下引号之间的所有内容

3)将结果存储到变量(不带“”)

2 个答案:

答案 0 :(得分:1)

如果这是结构化数据格式(json,xml)的一部分,那么最好使用解析器来表示所述格式。

如果失败,根据实际提供的信息,一个简单的正则表达式将会:

$string = 'image: "http://web.com/files/images/442873_large.jpg",
thumb: "http://static.web.com/scripts/image.php/60x60/402813.jpg",
mp3: "http://web.com/files/clip/6240/23121376.mp3",
waveform: "http://web.com/files/wave/23121376-wf.png"';

preg_match("~thumb: \"(.*)\",~", $string, $matches);

echo $matches[1];

答案 1 :(得分:0)

这个答案无疑是相当丑陋的,但确实有效。它利用了几个explode s(拆分字符串),foreach(迭代部分)和str_replace(去掉双引号)

$string = 'image: "http://web.com/files/images/442873_large.jpg",
thumb: "http://static.web.com/scripts/image.php/60x60/402813.jpg",
mp3: "http://web.com/files/clip/6240/23121376.mp3",
waveform: "http://web.com/files/wave/23121376-wf.png"';

$array = explode(",\r\n", $string);

$value = "not found";

foreach($array as $entry)
{
    if(substr($entry, 0, 5) == "thumb")
    {
        $parts = explode(": ", $entry);
        $value = str_replace('"', '', $parts[1]);
        break;
    }
}

echo $value;