gpt4 book ai didi

javascript - 使用 PHP 执行 "javascript/jQuery-like"函数

转载 作者:搜寻专家 更新时间:2023-10-31 21:26:24 27 4
gpt4 key购买 nike

我正在尝试将一些处理从客户端转移到服务器端。

我正在通过 AJAX 执行此操作。

在这种情况下,t 是这样的 URL:https://itunes.apple.com/us/podcast/real-crime-profile/id1081244497?mt=2&uo=2 .

第一个问题,我需要通过这个小函数发送一堆这样的 URL,以便使用我的示例提取“1081244497”。以下代码在 javascript 中实现了这一点,但不确定如何使其在 PHP 中循环。

    var e = t.match(/id(\d+)/);
if (e) {
podcastid= e[1];

} else {
podcastid = t.match(/\d+/);

}

下一部分比较棘手。我可以一次将其中一个 podcastid 传递给 AJAX 并取回我需要的内容,如下所示:

 $.ajax({
url: 'https://itunes.apple.com/lookup',
data: {
id: podcastid,
entity: 'podcast'
},
type: 'GET',
dataType: 'jsonp',
timeout: 5000,
success: function(data) {
console.log(data.results);
},
});

我不知道如何在 PHP 中完成同样的事情,但也使用 podcastid 列表而不一次传递一个(但这可能是唯一的方法) .

关于如何从这里开始的想法?

主要编辑

好的......让我根据一些评论澄清我现在需要什么。

我在 PHP 中有这个:

 $sxml = simplexml_load_file($url);
$jObj = json_decode($json);
$new = new stdClass(); // create a new object
foreach( $sxml->entry as $entry ) {
$t = new stdClass();
$t->id = $entry->id;
$new->entries[] = $t; // create an array of objects
}
$newJsonString = json_encode($new);
var_dump($new);

这给了我:

object(stdClass)#27 (1) {
["entries"]=>
array(2) {
[0]=>
object(stdClass)#31 (1) {
["id"]=>
object(SimpleXMLElement)#32 (1) {
[0]=>
string(64) "https://itunes.apple.com/us/podcast/serial/id917918570?mt=2&uo=2"
}
}
[1]=>
object(stdClass)#30 (1) {
["id"]=>
object(SimpleXMLElement)#34 (1) {
[0]=>
string(77) "https://itunes.apple.com/us/podcast/real-crime-profile/id1081244497?mt=2&uo=2"
}
}
}
}

我现在需要的是提取每个字符串(URL),然后通过如下函数运行它们,最终得到:“917918570,1081244497”,这只是 URL 的一部分, 以逗号连接。

我有这个函数来一次获取一个人的 ID 号,但在 foreach 的工作方式上苦苦挣扎(另外我知道必须有更好的方法来执行此功能):

$t="https://itunes.apple.com/us/podcast/real-crime-profile/id1081244497?mt=2&uo=2";
$some =(parse_url($t));
$newsome = ($some['path']);
$bomb = explode("/", $newsome);
$newb = ($bomb[4]);
$mrbill = (str_replace("id","",$newb,$i));
print_r($mrbill);
//outputs 1081244497

最佳答案

查找匹配 preg_match()http_build_query() 将数组转换为查询字符串。而 file_get_contents() 用于数据的请求。和 json_decode() 将 json 响应解析为 php 数组。

最后应该是这样的

$json_array = json_decode(file_get_contents('https://itunes.apple.com/lookup?'.http_build_query(['id'=>25,'entity'=>'podcast'])));
if(preg_match("/id(\d+)/", $string,$matches)){
$matches[0];
}

您可能需要稍微处理一下。不过,这应该会让您走上正确的轨道。如果遇到问题,您可以随时使用 print_r()var_dump() 进行调试。

就Apple API而言,使用,来分隔id

https://itunes.apple.com/lookup?id=909253,284910350

您将获得返回到数组中的多个结果,您可以使用 foreach() 循环来解析它们。

编辑

这是一个从 url 列表中获取艺术家姓名的完整示例

$urls = [
'https://itunes.apple.com/us/podcast/real-crime-profile/id1081244497?mt=2&uo=2.',
'https://itunes.apple.com/us/podcast/dan-carlins-hardcore-history/id173001861?mt=2'
];
$podcast_ids = [];
$info = [];
foreach ($urls as $string) {
if (preg_match('/id(\d+)/', $string, $match)) {
$podcast_ids[] = $match[1];
}
}
$json_array = json_decode(file_get_contents('https://itunes.apple.com/lookup?' . http_build_query(['id' => implode(',', $podcast_ids)])));
foreach ($json_array->results as $item) {
$info[] = $item->artistName;
}
print '<pre>';
print_r($info);
print '</pre>';

编辑 2

要将你的对象放入一个数组中,只需通过这个运行它

foreach ($sxml->entries as $entry) {
$urls[] = $entry->id[0];
}

当您访问和对象时,您使用 -> 当您访问数组时,您使用 []。 Json 和 xml 将解析为对象和数组的组合。因此,您只需跟随物体的路径并将正确的 key 放在正确的位置即可打开大门。

关于javascript - 使用 PHP 执行 "javascript/jQuery-like"函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35348654/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com