我有解析网址的解析器。
在某些解析的URL中,我有一个简单的空间,例如%20 ,但是如果我检查了解析网站的真实URL,我会看到此非破坏空间%C2%a0 。
那么,我如何替换%20 to %C2%A0 a0 ?
foreach($productUrls as $href) {
$productWithSpace = str_replace('%20', '%C2%A0', $href['url']);
$link = 'http://optnow.ru/' . $productWithSpace;
$product = file_get_html($link);
}
但是它仍然不起作用。
我的错误在哪里?
谢谢
我相信您要
urlencode将空间转换为' 's,但是如果您希望它们为%20,则可以使用RawurlenCode来解决这个问题。
$productWithSpace = rawurlencode(urldecode($href['url']));
$link = 'http://optnow.ru/' . $productWithSpace;
$product = file_get_html($link);
我将使用
urldecode($string)
它将为您自动解码任何URL。用户错误的机会更少。此外,它解码了您可能不知道需要解码的东西。
因此,您的新代码将是(这应该解决您的问题):
$productWithSpace = urldecode($href['url']);
$link = 'http://optnow.ru/' . $productWithSpace;
$product = file_get_html($link);