首页 > 解决方案 > 如何在 cURL 中管理带有特殊字符的 URL?

问题描述

我想知道在使用 cURL 时如何管理带有特殊字符的 URL。在下面的代码示例中,我实现了一个返回 url 的 HTTP 响应代码的函数

注意。我知道还有其他方法可以获取响应代码,但这只是为了说明 URL 中特殊字符的问题)

<?php
function get_http_code($url) {
    $ch = curl_init($url);

    curl_setopt($ch, CURLOPT_NOBODY, true);       
    curl_setopt($ch, CURLOPT_URL, $url);

    curl_exec($ch);
    return curl_getinfo($ch, CURLINFO_HTTP_CODE);
}

// urlA has a special character 'â' 
$urlA = "https://media.winefinder.com/upload/artiklar/bilder/KSU128248-1-Domaine-de-Ferrand-Châteauneuf-du.jpg";

// urlB has no special charactes
$urlB = "https://media.winefinder.com/upload/artiklar/bilder/A129749-1-Domaine-Lafage-Princesse-2019.png";

echo "<div>Code A = " . get_http_code($urlA) . "</div>";  // --> 404
echo "<div>Code B = " . get_http_code($urlB) . "</div>";  // --> 200
?>

两个 url 都存在,但由于 url 中的特殊字符,第一个返回 404(未找到)。如何将 URL 转换为将返回 200 的编码 URL?我已经尝试过urlencode()rawurlencode()等等,但我无法让它工作。

PS。我试图在 SO 找到类似的问题,但在这里找不到任何对我有帮助的问题......

标签: php

解决方案


推荐阅读