我想获取某个目录中每个文件的网址
我尝试了字符串连接(例如domain.folder1.folder2.file.mp3),但是某些文件夹和文件带有阿拉伯字符,使用url时会出错。
示例:
这是我的代码输出:
字符串A:
https://linkimage2url.com/apps/quran完整版/محمدصديقالمنشاوي/تسجيلاتالإذاعةالمصرية/ 009-At-Taubah(悔改)سورةالتوبة。mp3
此代码在某些android设备上不起作用
但是下一个代码适用于所有设备
字符串B:
注意:我从Internet下载管理器获得了字符串B,当我尝试使用字符串A时会自动将其转换
我的问题是:
如何通过php将字符串A转换为字符串B
还有没有更好的方法来读取目录并获取每个文件的网址
我的代码是:
if(is_dir($parent)){
if($dh = opendir($parent)){
while(($file = readdir($dh)) != false){
if($file == "." or $file == ".."){
//...
} else { //create object with two fields
sort($file);
$fileName = pathinfo($file)['filename'];
if(is_dir($parent."/".$file)){
$data[] = array('name'=> $fileName, 'subname'=> basename($path), 'url'=> $path."/".$file, "directory"=> true);
} else {
$res = "https://linkimage2url.com".$path."/".$file;
$data[] = array('name'=> $fileName, 'subname'=> basename($path), 'url'=> $res , "directory"=> false);
}
答案 0 :(得分:1)
尝试一下,我曾经在一个旧项目中使用过
function encode_fullurl($url) {
$output = '';
$valid = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!*\'();:@&=+$,/?#[]%';
$length = strlen($url);
for ($i = 0; $i < $length; $i++) {
$character = $url[$i];
$output .= (strpos($valid, $character) === false ? rawurlencode($character) : $character);
}
return $output;
}
$url ="https://linkimage2url.com/apps/quran full/محمد صديق المنشاوي/تسجيلات الإذاعة المصرية/009 - At-Taubah (The Repentance) سورة التوبة.mp3";
echo encode_fullurl($url);
输出:
它的性能不是很好,但是应该可以满足您的需求
答案 1 :(得分:0)
此代码对我有用
感谢每一位
$res1 = "https://linkimage2url.com" .$path."/".$file;
$query = flash_encode ($res1);
$url = htmlentities($query);
function flash_encode($string)
{
$string = rawurlencode($string);
$string = str_replace("%2F", "/", $string);
$string = str_replace("%3A", ":", $string);
return $string;
}