я использую phpQuery смоделировать запрос браузера. Коды просты, как следует:
require_once('phpQuery/phpQuery.php');
phpQuery::browserGet($url, 'success1');
function success1($browser) {
print $browser;
}
где URL http://www.etk.cc/bmw/EN/parts/info/13547556118
,
Тем не менее, я получил исключение:
Неустранимая ошибка: необработанное исключение ‘Zend_Uri_Exception’ с сообщением
«Путь» / bmw / EN / запчасти / информация /http://www.etk.cc/bmw/EN/parts/info/Throttle
housing Assy / 13547556118 / «не является допустимым путем HTTP»
Считается, что URL Rewrite изменил URL на http://www.etk.cc/bmw/EN/parts/info/Throttle housing Assy/13547556118/
но библиотека phpQuery или Zend не распознает перезапись URL.
Как мне решить эту проблему (загрузка правильного URL)?
Примечание: я не могу использовать URL после перезаписи URL, так как URL содержит название продукта & не имеет шаблона.
Вот мое решение.
Сначала я использую следующие коды, чтобы получить заголовок запроса:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
$out = curl_exec($ch);
От Location:
заголовок, я могу знать переписанный URL. Затем я использую phpQuery
снова, чтобы получить необходимую информацию, используя вновь полученный переписанный URL.
Сноска: Я думаю, что Исключением в вопросе является ошибка в phpQuery.
Других решений пока нет …