我有一个url,其中包含各种POST-DATA和最后一个图像文件。
我的示例链接是:http://website-link.com/?page=gf_signature&signature=565dbca63791e5.87676354.png
我想从网址中分离565dbca63791e5.87676354.png
并从中分隔扩展名(.png)。
我试过这个:
<?php
$images = array();
$imagesNew = array();
$imgUrls = array(
'ptSignature' => 'http://website-link.com/?page=gf_signature&signature=5668695879dc84.35037895.png',
'pSignature' => 'http://website-link.com/?page=gf_signature&signature=5668694f80aa55.79055562.png',
'witness1Signature' => 'http://website-link.com/?page=gf_signature&signature=5668695875c6e5.03917128.png',
'witness2Signature' => 'http://website-link.com/?page=gf_signature&signature=5668695879dc84.35037895.png',
)
function make_without_ext($str)
{
$regex = "/signature=(?<signature>[^&]+)/";
preg_match($regex, $str, $matches);
$signature = $matches["signature"];
$ext = substr(strrchr($signature, '.'), 1);
$without_extension = basename($signature, '.png');
return $without_extension;
}
foreach ($imgUrls as $imgUrl) {
$imgWithoutExt = make_without_ext($imgUrl);
array_push($images, $imgWithoutExt);
}
foreach ($images as $image) {
$content = file_get_contents($image);
$data = base64_encode($content);
array_push($imagesNew, $data)
}
print '<pre>';
print_r ($imagesNew);
print '<pre>';
但它显示syntax error, unexpected 'function' (T_FUNCTION)
答案 0 :(得分:1)
我为这样的事情做的是使用PHP的explode功能。使用你的代码,我会做这样的事情:
$str_parts = explode('.', $str);
$extension = array_pop($str_parts);
请注意,这假设你有一个。在你的字符串!然后您可以使用substr或其他东西返回没有此扩展名的原始字符串。如果签名始终是您网址中的最后一个参数,那么您可以使用相同的技术抓取它,如果您想要使用parse_url可能有更好的方法。
更好的工作实例
<?php
$url = "http://website-link.com/?page=gf_signature&signature=565dbca63791e5.87676354.png";
// to keep query only
$a = explode('&', parse_url($url, PHP_URL_QUERY));
$count = 0;
// looping parameters
foreach($a as $as => $that){
if(preg_match('|signature=|', $a[$count]) != false){
// this is like, if this string is contained in this string do that
$b = trim($a[$count], 'signature='); // to remove the part we dont want
$b = trim($b, '.png'); // again
echo $b; // voilà!
}
$count++;
}
?>
我必须承认这一点foreach($a as $as => $that){
我是一种在循环中徘徊的人。