如何解决包含阿拉伯字符的网址

时间:2019-06-01 08:48:25

标签: php

我想获取某个目录中每个文件的网址

我尝试了字符串连接(例如domain.folder1.folder2.file.mp3),但是某些文件夹和文件带有阿拉伯字符,使用url时会出错。

示例:

这是我的代码输出:

字符串A:

https://linkimage2url.com/apps/quran完整版/محمدصديقالمنشاوي/تسجيلاتالإذاعةالمصرية/ 009-At-Taubah(悔改)سورةالتوبة。mp3

此代码在某些android设备上不起作用

但是下一个代码适用于所有设备

字符串B:

https://linkimage2url.com/apps/quran%20full/%D9%85%D8%AD%D9%85%D8%AF%20%D8%B5%D8%AF%D9%8A%D9%82%20%D8%A7%D9%84%D9%85%D9%86%D8%B4%D8%A7%D9%88%D9%8A/%D8%AA%D8%B3%D8%AC%D9%8A%D9%84%D8%A7%D8%AA%20%D8%A7%D9%84%D8%A5%D8%B0%D8%A7%D8%B9%D8%A9%20%D8%A7%D9%84%D9%85%D8%B5%D8%B1%D9%8A%D8%A9/009%20-%20At-Taubah%20(The%20Repentance)%20%D8%B3%D9%88%D8%B1%D8%A9%20%D8%A7%D9%84%D8%AA%D9%88%D8%A8%D8%A9.mp3

注意:我从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);
}

2 个答案:

答案 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);

输出:

https://linkimage2url.com/apps/quran%20full/%D9%85%D8%AD%D9%85%D8%AF%20%D8%B5%D8%AF%D9%8A%D9%82%20%D8%A7%D9%84%D9%85%D9%86%D8%B4%D8%A7%D9%88%D9%8A/%D8%AA%D8%B3%D8%AC%D9%8A%D9%84%D8%A7%D8%AA%20%D8%A7%D9%84%D8%A5%D8%B0%D8%A7%D8%B9%D8%A9%20%D8%A7%D9%84%D9%85%D8%B5%D8%B1%D9%8A%D8%A9/009%20-%20At-Taubah%20(The%20Repentance)%20%D8%B3%D9%88%D8%B1%D8%A9%20%D8%A7%D9%84%D8%AA%D9%88%D8%A8%D8%A9.mp3

它的性能不是很好,但是应该可以满足您的需求

答案 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;
   }