PHP 获取域年龄的脚本有问题 (file_get_contents)
Problem with PHP Script to get Domain Age ( file_get_contents)
嗨,我在 php 中遇到了一个我不明白的问题,
我制作了一个 php 脚本 以从特定域中获取 域年龄从 waybackmachine 和 file_get_contents
Domains 都在一个名为 domains 的数组中,来自用户的 texfield。
脚本工作正常但仅适用于数组中的第一个域,但是对于第二个域,我只从循环中得到奇怪的值或什么都没有
但我不知道为什么,我没有看错。并且数组中的所有域都是正确的。
谁能帮我看看我做错了什么?
//Array with Domains
$domain = explode("\n",trim($_POST['url']));
// Print the Array for debugging
print_r($domain);
// count domains for the loop
$count = count($domain);
echo $count;
for ($i = 0; $i < $count; $i++) {
$content=file_get_contents('http://web.archive.org/cdx/search/cdx?url='.$domain[$i].'',FALSE, NULL, 1, 600);
//use the data from file_get_contents to calculate the age
preg_match('/\d+/', $content, $date);
$startyear= substr($date[0], 0, -10);
$startmonth= substr($date[0], 4, -8);
$actualyear= date("Y");
// calculate the year & month
$years= $actualyear- $startyear;
$month= 12-$startmonth;
//echo the Age
echo " <div style='font-size:20px;text-align:center;width:100%;height:5%;color:#25bb7f;
font-weight: bold;'> $domain[$i]: $years Jahre und $month Monate </div>";
}
我认为问题出在URL解码和编码上。您传递给 'http://web.archive.org/cdx/search/cdx?url='
的域必须完全编码。
请参阅下文如何完成此操作...
//Array with Domains
$domain = explode("\n",trim($_POST['url']));
# url encode all the urls/domains.
$domain = array_map(function($domain){ return urlencode($domain); }, $domain);
// Print the Array for debugging
print_r($domain);
// count domains for the loop
$count = count($domain);
echo $count;
for ($i = 0; $i < $count; $i++) {
$content=file_get_contents('http://web.archive.org/cdx/search/cdx?url='.$domain[$i].'',FALSE, NULL, 1, 600);
//use the data from file_get_contents to calculate the age
preg_match('/\d+/', $content, $date);
$startyear= substr($date[0], 0, -10);
$startmonth= substr($date[0], 4, -8);
$actualyear= date("Y");
// calculate the year & month
$years= $actualyear- $startyear;
$month= 12-$startmonth;
//echo the Age
$domainNonEncoded = htmlspecialchars(urldecode($domain[$i])); # get the decoded url
echo " <div style='font-size:20px;text-align:center;width:100%;height:5%;color:#25bb7f;
font-weight: bold;'> {$domainNonEncoded}: $years Jahre und $month Monate </div>";
}
嗨,我在 php 中遇到了一个我不明白的问题,
我制作了一个 php 脚本 以从特定域中获取 域年龄从 waybackmachine 和 file_get_contents
Domains 都在一个名为 domains 的数组中,来自用户的 texfield。
脚本工作正常但仅适用于数组中的第一个域,但是对于第二个域,我只从循环中得到奇怪的值或什么都没有
但我不知道为什么,我没有看错。并且数组中的所有域都是正确的。
谁能帮我看看我做错了什么?
//Array with Domains
$domain = explode("\n",trim($_POST['url']));
// Print the Array for debugging
print_r($domain);
// count domains for the loop
$count = count($domain);
echo $count;
for ($i = 0; $i < $count; $i++) {
$content=file_get_contents('http://web.archive.org/cdx/search/cdx?url='.$domain[$i].'',FALSE, NULL, 1, 600);
//use the data from file_get_contents to calculate the age
preg_match('/\d+/', $content, $date);
$startyear= substr($date[0], 0, -10);
$startmonth= substr($date[0], 4, -8);
$actualyear= date("Y");
// calculate the year & month
$years= $actualyear- $startyear;
$month= 12-$startmonth;
//echo the Age
echo " <div style='font-size:20px;text-align:center;width:100%;height:5%;color:#25bb7f;
font-weight: bold;'> $domain[$i]: $years Jahre und $month Monate </div>";
}
我认为问题出在URL解码和编码上。您传递给 'http://web.archive.org/cdx/search/cdx?url='
的域必须完全编码。
请参阅下文如何完成此操作...
//Array with Domains
$domain = explode("\n",trim($_POST['url']));
# url encode all the urls/domains.
$domain = array_map(function($domain){ return urlencode($domain); }, $domain);
// Print the Array for debugging
print_r($domain);
// count domains for the loop
$count = count($domain);
echo $count;
for ($i = 0; $i < $count; $i++) {
$content=file_get_contents('http://web.archive.org/cdx/search/cdx?url='.$domain[$i].'',FALSE, NULL, 1, 600);
//use the data from file_get_contents to calculate the age
preg_match('/\d+/', $content, $date);
$startyear= substr($date[0], 0, -10);
$startmonth= substr($date[0], 4, -8);
$actualyear= date("Y");
// calculate the year & month
$years= $actualyear- $startyear;
$month= 12-$startmonth;
//echo the Age
$domainNonEncoded = htmlspecialchars(urldecode($domain[$i])); # get the decoded url
echo " <div style='font-size:20px;text-align:center;width:100%;height:5%;color:#25bb7f;
font-weight: bold;'> {$domainNonEncoded}: $years Jahre und $month Monate </div>";
}