我执行Semrush API调用并获得以下服务器响应:
Database;Domain;Rank;Organic Keywords;Organic Traffic;Organic Cost;Adwords Keywords;Adwords Traffic;Adwords Cost;PLA uniques;PLA keywords
us;seobook.com;98072;14085;14300;62233;0;0;0;0;0
这些实际上是2行,其中值彼此对应。例如:
Database = us,Domain = seobook.com,Rank = 98072
等等..我需要将这些值解析为变量。
我真正需要的是:Domain, Organic Traffic, Organic Cost
所以我想将他们的价值存储到$domain
,$traffic
,$cost
我如何在PHP中执行此操作?
请帮助任何人。 提前致谢
答案 0 :(得分:0)
这是一种称为CSV(字符分隔值)的格式。它通常用于大型记录列表。 PHP有一个函数fgetcsv()
来读取这种格式(来自文件资源)。
$csv = <<<'CSV'
Database;Domain;Rank;Organic Keywords;Organic Traffic;Organic Cost;Adwords Keywords;Adwords Traffic;Adwords Cost;PLA uniques;PLA keywords
us;seobook.com;98072;14085;14300;62233;0;0;0;0;0
CSV;
$stream = fopen('data://text/plain;base64,'.base64_encode($csv), 'rb');
$columns = NULL;
$values = [];
// read a line from the stream
while ($line = fgetcsv($stream, 0, ';')) {
if (NULL === $columns) {
// first line is columns, store it
$columns = $line;
// and continue with the next line
continue;
}
// any other line combine the columns with the values and store
$values[] = array_combine($columns, $line);
}
var_dump($values);
输出:
array(1) {
[0]=>
array(11) {
["Database"]=>
string(2) "us"
["Domain"]=>
string(11) "seobook.com"
["Rank"]=>
string(5) "98072"
["Organic Keywords"]=>
string(5) "14085"
["Organic Traffic"]=>
string(5) "14300"
["Organic Cost"]=>
string(5) "62233"
["Adwords Keywords"]=>
string(1) "0"
["Adwords Traffic"]=>
string(1) "0"
["Adwords Cost"]=>
string(1) "0"
["PLA uniques"]=>
string(1) "0"
["PLA keywords "]=>
string(1) "0"
}
}
提示:此示例使用数据URL将CSV字符串作为文件资源进行访问。在不需要的实际实现中,API应该提供文件资源/流。