我的网站上有1000张图片(在编码器中运行),其名称为
My_image_1.png, My_image_2.png ........ My_image_1000.png
并在此网址http://example.com/files/My_image_1.png
但我希望网址为http://example.com/images?cid=1.png
= My_image_1.png
我怎么能在PHP中做到这一点?
这就是我正在尝试的
if ( !function_exists('get_img_by_cid')) {
function get_img_by_cid() {
if ( isset($_GET['cid']) ) {
$cid = $_GET['cid'];
return '/path_to_image/My_image_'.$cid.'.png';
} else {
return 'Please specify compound id';
}
}
}
此函数返回原始路径,但我需要url,如下例所示。
无论我在哪里使用地址栏或img标签
这是一个例子 https://pubchem.ncbi.nlm.nih.gov/image/imgsrv.fcgi?cid=2244
任何帮助或教程都将受到极大关注:)
答案 0 :(得分:2)
您可以通过以下代码来实现它。
您的网址= http://example.com/images.php?cid=1.png
将以下代码写入images.php
文件
<img src="<?php echo "My_image_".$_GET['cid'];?>">
上面的行将显示名为My_image_1.png
希望这会对你有所帮助
谢谢&amp;此致
答案 1 :(得分:0)
你需要写.htaccess规则:
RewriteCond %{QUERY_STRING} cid=([0-9]+) [NC]
RewriteRule ^images$ /files/My_image_%1.png [L]
修改:
location / {
if ($query_string ~* "cid=([0-9]+)"){
rewrite ^/images$ /files/My_image_%1.png break;
}
}
答案 2 :(得分:0)
基于Rust-Lang-Nursery GitHub Page提供的代码,我和朋友写了这个:
<?php
$file = "My_image_".$_GET['cid'];
$size = getimagesize($file);
$fp = fopen($file, "rb");
if ($size && $fp) {
header("Content-type: {$size['mime']}");
fpassthru($fp);
exit;
} else {
header("HTTP/1.0 404 Not Found");
}
readfile("{$file}");
?>
有了这个,https://example.com/?cid=1.png
将显示你的图像没有任何问题...只要它存储到index.php,否则你的网址类似于https://example.com/index.php?cid=1.png
,但有正确的php文件名在网址中。
修改强>
另外请注意,$file
应包含文件的文件夹路径,例如
$file = "/path_to_image/My_image_".$_GET['cid'];
如果这有用,请告诉我,您的问题与我们的问题相同!