2012-03-24 12 views
1

ich habe diese Funktionen url_to_absolute seine gute Arbeit, aber nicht, wenn die Bild-URL Raum oder arabische Zeichen hatphp url absolute Funktion jetzt mit Leerzeichen und arabischen Zeichen arbeitet

dieses Arbeitsbeispiel

<?php 
    require_once('url_to_absolute.php'); 
    $url = 'http://site.com/news/view.aspx?id=23032012'; 
    echo url_to_absolute($url, '/uploadedimages/Sections/Politics/Arabic_World/original/Administrative-detention.jpg'), "\n"; 
    ?> 
look here if we have space in "Arabic World" 
<?php 
    require_once('url_to_absolute.php'); 
    $url = 'http://site.com/news/view.aspx?id=23032012'; 
    echo url_to_absolute($url, '/uploadedimages/Sections/Politics/Arabic World/original/Administrative-detention.jpg'), "\n"; 
?> 

es wird nicht funktionieren, und wenn es auch arabische Zeichen

+0

Wir müssen den Körper 'url_to_absolute' Funktion sehen. Und rufen Sie nicht 'require_once ('url_to_absolute.php');' zweimal! –

+1

hhhhhh das ist nur ein Beispiel, lassen Sie nicht das Peoblem und fangen in dieser Scheiße –

Antwort

0

Code:

<?php 
function code2utf($num){ 
    if($num<128) 
    return chr($num); 
    if($num<1024) 
    return chr(($num>>6)+192).chr(($num&63)+128); 
    if($num<32768) 
    return chr(($num>>12)+224).chr((($num>>6)&63)+128) 
      .chr(($num&63)+128); 
    if($num<2097152) 
    return chr(($num>>18)+240).chr((($num>>12)&63)+128) 
      .chr((($num>>6)&63)+128).chr(($num&63)+128); 
    return ''; 
} 

function unescape($strIn, $iconv_to = 'UTF-8') { 
    $strOut = ''; 
    $iPos = 0; 
    $len = strlen ($strIn); 
    while ($iPos < $len) { 
    $charAt = substr ($strIn, $iPos, 1); 
    if ($charAt == '%') { 
     $iPos++; 
     $charAt = substr ($strIn, $iPos, 1); 
     if ($charAt == 'u') { 
     // Unicode character 
     $iPos++; 
     $unicodeHexVal = substr ($strIn, $iPos, 4); 
     $unicode = hexdec ($unicodeHexVal); 
     $strOut .= code2utf($unicode); 
     $iPos += 4; 
     } 
     else { 
     // Escaped ascii character 
     $hexVal = substr ($strIn, $iPos, 2); 
     if (hexdec($hexVal) > 127) { 
      // Convert to Unicode 
      $strOut .= code2utf(hexdec ($hexVal)); 
     } 
     else { 
      $strOut .= chr (hexdec ($hexVal)); 
     } 
     $iPos += 2; 
     } 
    } 
    else { 
     $strOut .= $charAt; 
     $iPos++; 
    } 
    } 
    if ($iconv_to != "UTF-8") { 
    $strOut = iconv("UTF-8", $iconv_to, $strOut); 
    } 
    return $strOut; 
} 
?> 

Versuchen:

<?php 
    $newUrl = unescape($url); 
?> 
+1

Sehr schnelle Kopie Katze von http://www.php.net/manual/pt_BR/function.urldecode.php#62707 –

+0

@Shiplu Yep ... Aber es hat für mich in der Vergangenheit funktioniert ... Und da, wenn ich einen Link poste, der OP es höchstwahrscheinlich nie besuchen würde, entschied ich, den genauen Code, den er brauchen könnte, zu kopieren: –

+0

Es ist besser, du poste die Erklärung des Codes. Warum sollte es das Problem von OP lösen? –