php - 如何在函数外键入值
问题描述
我想要函数之外的 $name 的值,所以我可以用它重命名 zip 文件,但如何做到这一点?
这个crawele方法,我不能使用函数外的值
<?php
require 'vendor/autoload.php';
use Symfony\Component\DomCrawler\Crawler;
$client = new \GuzzleHttp\Client();
// go get the date from url
$url = 'https://hentaifox.com/gallery/58118/';
$resnm = $client->request('GET', $url);
$htmlnm = ''.$resnm->getBody();
$crawler = new Crawler($html);
$res_name = $client->request('GET', $url);
$html_name = ''.$res_name->getBody();
$crawler_name = new Crawler($html_name);
$nameValues_name = $crawler_name->filter('.info > h1')->reduce(function (Crawler $node, $i){
$name = $node->text();
return $maname;
});
print_r($name);
$res = $client->request('GET', $url);
$html = ''.$res->getBody();
$crawler = new Crawler($html);
$nodeValues = $crawler->filter('.gallery .preview_thumb')->each(function (Crawler $node, $i) {
$image = $node->filter('img')->attr('data-src');
$imagerep = str_replace(array('//i2.hentaifox.com' , '//i.hentaifox.com','t.jpg'),array('https://i2.hentaifox.com','https://i2.hentaifox.com','.jpg'),$image);
$zip = new ZipArchive();
$my_save_dir = $name.'.zip';
$zip->open($my_save_dir, ZipArchive::CREATE);
$imgdownload = file_get_contents($imagerep);
$zip->addFromString(basename($imagerep), $imgdownload);
$zip->close();
});
帮我找出 $name 的值,用它来命名 $my_save_dir 中的 zip 文件
解决方案
如果你想从外部使用一个变量,在你的匿名函数内部,你需要这样做:
$nodeValues = $crawler->filter('.gallery .preview_thumb')
->each(function (Crawler $node, $i) use ($name) {
如果您还希望能够访问在匿名函数中对变量所做的任何更改,则需要通过引用传递它:
$nodeValues = $crawler->filter('.gallery .preview_thumb')
->each(function (Crawler $node, $i) use (&$name) {
您也可以声明$name
为global
变量,但这通常被认为是一种不好的做法,您始终需要跟踪它们。
推荐阅读
- c++ - 如何定义可变参数宏来初始化联合?
- html - 更改背景颜色 FullCalender 反应
- android - 如何在 Android 上阻止蓝牙配置文件?
- react-native - 动态添加解析器以响应钩子形式?
- javascript - Firebase AppCheck - Web 应用程序无法在调试模式下运行
- c++ - 如何修复尺寸错误?
- python - 谱聚类相似矩阵的实现
- android - AlarmManager.setRepeating 长时间延迟后发出警报(近 10 分钟)
- java - MvcResult 返回 application/json;charset=UTF-8
- excel - 将 txt 文件导入 Google Sheet 的脚本(基于现有的 VBA)