爆炸数据数组

时间:2018-08-12 21:52:51

标签: php

我已经构建了以下代码,并且正在执行我的代码数组部分所需的工作。

$demo = '[url=https://www78.zippyshare.com/v/AQg3SYMQ/file.html]1. Like Im Fabo.mp3[/url][url=https://www78.zippyshare.com/v/TPRugyFb/file.html]2. Stic _Em Up.mp3';
$arr = explode("[/url]", $demo);
print '<pre>'; print_r($arr); print '</pre>';

上面的部分返回这个。

Array
(
    [0] => [url=https://www78.zippyshare.com/v/AQg3SYMQ/file.html]1. Like Im Fabo.mp3
    [1] => [url=https://www78.zippyshare.com/v/TPRugyFb/file.html]2. Stic _Em Up.mp3
)

我现在想知道如何分解上面的每个部分以返回类似的内容。

Array
(
    [0] => https://www78.zippyshare.com/v/AQg3SYMQ/file.html
    [0] => 1. Like Im Fabo.mp3
    [1] => https://www78.zippyshare.com/v/TPRugyFb/file.html
    [1] => 2. Stic _Em Up.mp3
)

这样我就可以轻松获取文件路径和文件名。

3 个答案:

答案 0 :(得分:2)

您可以使用正则表达式进行解析:

// Setup regex
$re = '/\[url=(?P<url>[^\]]*)](?P<song>[^\[]*)\[\/url]/';
$str = '[url=https://www78.zippyshare.com/v/AQg3SYMQ/file.html]1. Like Im Fabo.mp3[/url][url=https://www78.zippyshare.com/v/TPRugyFb/file.html]2. Stic _Em Up.mp3[/url]';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
var_dump($matches);

输出将是这样的:

array(2) {
  [0]=>
  array(5) {
    [0]=>
    string(80) "[url=https://www78.zippyshare.com/v/AQg3SYMQ/file.html]1. Like Im Fabo.mp3[/url]"
    ["url"]=>
    string(49) "https://www78.zippyshare.com/v/AQg3SYMQ/file.html"
    [1]=>
    string(49) "https://www78.zippyshare.com/v/AQg3SYMQ/file.html"
    ["song"]=>
    string(19) "1. Like Im Fabo.mp3"
    [2]=>
    string(19) "1. Like Im Fabo.mp3"
  }
  [1]=>
  array(5) {
    [0]=>
    string(79) "[url=https://www78.zippyshare.com/v/TPRugyFb/file.html]2. Stic _Em Up.mp3[/url]"
    ["url"]=>
    string(49) "https://www78.zippyshare.com/v/TPRugyFb/file.html"
    [1]=>
    string(49) "https://www78.zippyshare.com/v/TPRugyFb/file.html"
    ["song"]=>
    string(18) "2. Stic _Em Up.mp3"
    [2]=>
    string(18) "2. Stic _Em Up.mp3"
  }
}

您可以像这样遍历结果集:

foreach ($matches as $match){
     echo(($match["url"])." => ".($match["song"])."\r\n");
}

结果将是:

https://www78.zippyshare.com/v/AQg3SYMQ/file.html => 1. Like Im Fabo.mp3
https://www78.zippyshare.com/v/TPRugyFb/file.html => 2. Stic _Em Up.mp3

答案 1 :(得分:0)

首先使用trim修剪字符串开头的[url =] 然后用]

分解字符串的其余部分

答案 2 :(得分:-1)

您应该遍历数组,并使用parse_url()函数解析每个URL。