Nasıl PHP ile bir dize olarak bir HTML sayfası alabilirim?

5 Cevap php

I simple_php_dom ve kıvrım kullanarak bir web sayfası PHP ile bazı bilgi alma duyuyorum. Sorun DOM nesnesi hatalı bilgi içeren bu yüzden sayfa doğru inşa olmasıdır.

Ben bunun üzerinden bir düzenli ifadeyi çalıştırmak böylece nasıl bir PHP var bir dize olarak HTML dosyası alabilirim?

Curl doesn't work as it is ignoring the bad part.
simple_html_dom.php has the same issue.
wget doesn't work since I don't have permissions for it on the server.

5 Cevap

file_get_contents - Bir dizeye tüm dosyayı okur

string file_get_contents ( 
    string $filename [, int $flags= 0 [, resource $context [, int $offset= -1 [, int $maxlen= -1 ]]]] 
)

manuel:

Bu fonksiyon bu file_get_contents () maxlen kadar ofset belirtilen bayt başlayan bir dize dosya döner hariç) (dosya benzer. Başarısızlık halinde, file_get_contents () FALSE döndürür.

file_get_contents () bir dizeye bir dosyanın içeriğini okumak için tercih edilen yoldur. Performansını artırmak için işletim sistemi tarafından destekleniyorsa bellek haritalama teknikleri kullanacağız.

Ve bu web sayfalarında ve dosyalar ile de çalışır. Sadece $ dosya "http://whatever.com/page.html" kullanarak, HTML yakalayabilir.

Kıvrılma ile size sayfa bir dize, örneğin olarak alınır emin olmak için CURLOPT_RETURNTRANSFER parametre ayarı konum emin olmak istersiniz:

    //return the transfer as a string 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

Bkz http://www.php.net/manual/en/function.curl-setopt.php

Nasıl fsockopen bağlayın ve sonra var içine çekmek için fgets kullanımı hakkında?

Ben o zaman ayrıştırmak için simple_html_dom yükü (dizeden) yöntemi kullanılarak (simple_html_dom :: load_file sadece file_get_contents sarar) bir dizeye dosyayı almak için cURL kullanılır. Bu, bazı URL için çalışıyor ama URL parametre dize olduğunda bu durumda başarısız oluyor. Bir parametre dize değil vardı sanki URL'yi getiriliyor. Ben bir tarayıcı ama hiçbir zar kimliğine bürünmek için kıvrılmış bir ajan ayarlayın.

Maalesef bu gerçekten bir cevap değil, ama belki kıvrılmasını kullanarak fopen ayar bir sorundur kimin için bazı insanlar için çalışacaktır.

Ayrıca kullanmak highlight_file function olabilir