PHP url解码不起作用

时间:2015-12-01 11:33:14

标签: php urldecode

我在解码从iOS应用收到的网址时遇到了问题;网址是那种:

  

percorsoWithOption.php partenza =通过%20Gaspare%20Balbi%202-8&安培; arrivo =通过%20Conca%20d'Oro&安培;语言= it_IT&安培;纬度= 41.717835&安培;经度= 12.311369&安培; endLatitude = 41.679623&安培; endLongitude = 12.484474&安培; JSON = 1

当我尝试在下面解码时: Online decoder 它解码得很好。 然而,当我申请时:

if (isset($_GET['arrivo'])) $arrivo=$_GET['arrivo'];
if (isset($_GET['partenza'])) $partenza=$_GET['partenza'];
error_log("*inizio**departure=$partenza, arrival=$arrivo,   latitude=$latitude, longitude=$longitude");
if (isset($partenza)) $partenza=urldecode($partenza);
if (isset($arrivo)) $arrivo=urldecode($arrivo);
error_log("***departure=$partenza, arrival=$arrivo, latitude=$latitude, longitude=$longitude");

日志报告的值几乎没有变化:

  

[Tue Dec 01 12:25:22.566615 2015] [:error] [pid 20812] [客户   82.61.145.186:37526] * inizio **出发= Via Gaspare Balbi 2 \ xe2 \ x80 \ x938,抵达= Via Conca d'Oro,纬度= 41.717835,   经度= 12.311369 [Tue Dec 01 12:25:22.569876 2015]   [:错误] [pid 20812] [客户82.61.145.186:37526] ***出发= Via Gaspare Balbi   2 \ xe2 \ x80 \ x938,到达= Via Conca d'Oro,纬度= 41.717835,   经度= 12.311369   基本上2 \ xe2 \ x80 \ x938保持不变。

3 个答案:

答案 0 :(得分:0)

它没有"几乎没有变化"它的URL解码就好了。唯一的问题是 en dash 显示为" \ xe2 \ x80 \ x93"在你的日志中。

  1. 目前还不清楚这是否是如何记录或查看值的问题,或者该值是否实际" \ xe2 \ x80 \ x93"。要对此进行测试,请在字符串上使用bin2hex(),看看它是否显示为e28093(只是 - 字符)或5c78...(字面意思" \ x ...&# 34。)
  2. 该短划线应在URL中以%E2%80%93进行URL编码,而不是原始字符。在客户端修复此问题。

答案 1 :(得分:0)

我最终使用了:

-(NSString*)stripNonStandardAndEncode:(NSString*)origin{
     NSMutableCharacterSet *charactersToKeep = [NSMutableCharacterSet alphanumericCharacterSet];
    [charactersToKeep addCharactersInString:@" ,.'"];

    NSCharacterSet *charactersToRemove = [charactersToKeep invertedSet];

    NSString *trimmedReplacement = [[ origin componentsSeparatedByCharactersInSet:charactersToRemove] componentsJoinedByString:@""];
    return [trimmedReplacement stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}

现在php无缝处理它:url decode可能会遇到一些问题' - '

答案 2 :(得分:-1)

您可以使用rawurldecode功能。