/** * Prepares the given HTTP-query-string for the HTTP-request. * * HTTP-query-strings always should be utf8-encoded and urlencoded afterwards. * So "/path/file?test=tatütata" will be converted to "/path/file?test=tat%C3%BCtata": * * @param stirng The quetry-string (like "/path/file?test=tatütata") * @return string */ protected function prepareHTTPRequestQuery($query) { // If string already is a valid URL -> do nothing if (PHPCrawlerUtils::isValidUrlString($query)) { return $query; } // Decode query-string (for URLs that are partly urlencoded and partly not) $query = rawurldecode($query); // if query is already utf-8 encoded -> simply urlencode it, // otherwise encode it to utf8 first. if (PHPCrawlerUtils::isUTF8String($query) == true) { $query = rawurlencode($query); } else { $query = rawurlencode(utf8_encode($query)); } // Replace url-specific signs back $query = str_replace("%2F", "/", $query); $query = str_replace("%3F", "?", $query); $query = str_replace("%3D", "=", $query); $query = str_replace("%26", "&", $query); return $query; }