Curl ve yönlendirmeleri - Birden başlıklarını dönen?

0 Cevap php

Ben özel bir PHP vekil yazıyorum ve cURL bir özelliği ile şaşkına var.

Aşağıdaki değerlere ayarlanır ise:

curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $ch, CURLOPT_HEADER, true );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );

Curl doğru yönlendirmeleri kolları, ama tüm sayfa başlıkları, sadece final (non-yönlendirme) sayfasını, örneğin döner

HTTP/1.1 302 Found
Location: http://otherpage
Set-Cookie: someCookie=foo
Content-Length: 198

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 3241

<!DOCTYPE HTML>
...rest of content

Ben okumak gerekir ve benim vekil başlığının içine orijinal başlığının parçalarını kopyalamak için CURLOPT_HEADER ayarlandığını unutmayın.

Neden (örneğin, benim vekil kodu 302 başlığındaki herhangi bir set çerezleri algılar ve onları birlikte geçmelidir) Tüm bu başlıkları dönen ediyor sevinirim. Ancak, o da başlıklar sona zaman imkansız tespit etmek için yapar ve içeriği başlar. Normalde, bir başlığı ile biz sadece basit bir bölme yapabilirsiniz:

$split = preg_split('/\r\n\r\n/', $fullPage, 2)

Ama tabii ki burada çalışmaz. Hm. Biz sonraki satır bir başlık parçası gibi görünüyor eğer sadece böler şey deneyebilirsiniz:

$split = preg_split('/\r\n\r\nHTML\/(1\.0|1\.1) \\d+ \\w+/', $fullPage)
// matches patterns such a "\r\n\r\nHTML/1.1 302 Found"

Hangi hemen hemen her zaman çalışır, ama kimse kendi sayfasında aşağıdaki eğer bobinleri olacaktır:

...and for all you readers out there, here is an example HTTP header:
<PRE>

HTTP/1.1 200 OK

TOPLARI!

Bunu yapmak için bir yol var - Biz gerçekten HTML/1.x en kısa sürede hemen ardından değil \r\n\r\n herhangi bir desen karşılaştığında gibi stop matching için split istiyorum PHP RegExs ile? Hatta bu çözüm birisi sağ onların içeriğinin başında bir HTTP başlığı koyar (oldukça nadir) duruma Yutabilirsin. Bir dizi olarak döndürülen tüm sayfaları almak için cURL bir yolu var mı?

0 Cevap