HTML grabbing

balufreak

Mitglied
Thread Starter
Mitglied seit
12.10.2003
Beiträge
1.565
Hallo Leute!

Ich möchte gerne für meine Page einen HTML grabber basteln.
Folgendes Szenario:

Meine seite soll in einem formular einen Wert von einer externen seite beziehen. Auf der externen Seite ist der Wert ebenfalls in einem Formularfeld.

Nun ich habe das jetzt mal so gemacht:
PHP:
$datei = $url;
$da_id = file_get_contents($datei);                          
                                                             
$search = '<input type="text" name="c_top" value="';
nun soll das script die variable $da_id nach dem $search durchsuchen und mir den Wert nach dem = nach Value zurückgeben.
Wie geht das?

Frohe Festtage
 

oglimmer

Mitglied
Mitglied seit
16.11.2004
Beiträge
1.245
Die Datei mit
fopen ($url, "r") öffnen und wie eine Datei auslesen. (Beachte den Hinweis zu allow_url_fopen).

Dann hat man die Seite als String und kann sie ganz normal durchsuchen (zb. mit ein paar strpos(...) Opertionen).
 

michanismus

Mitglied
Mitglied seit
23.08.2004
Beiträge
434
ich würde dir dringends empfehlen dich mit regulären ausdrücken zu beschäftige!

preg_find
preg_find_all
preg_replace
etc...

eine gute anleitung findest du hier: http://www.devmag.net/webprog/regulaere_ausdruecke.htm

falls du fragen hast, frag :)
aber versuch dich erstmal selbst durchzukämpfen, und nicht aufgeben, dass ganze ist am anfang etwas schwer zu verstehen.

regex sind sehr mächtig...
 

balufreak

Mitglied
Thread Starter
Mitglied seit
12.10.2003
Beiträge
1.565
Danke für eure Antworten.
Ich habe mir mal beides angeschaut. Das mit den regulären ausdrücken klingt gut. Ist aber auch ein Bisschen kompliziert.
Es müsste ja quasi
<input type="text" name="c_top" value="1234" /> durch 1234 ersetzen. Nun kann mir jemand dazu ein Beispiel geben? Ich schnalle das noch nicht so ganz.

PHP:
//Meins sieht etwa so aus. Aber ich denke nicht dass es funktioniert. Werde es mal testen.
$str = 'Ein HTML Quellcode'
$str = preg_replace("!<input type="text" name="c_top" value="(.*)\" />!",und jetzt?,$str);
Nun was kommt jetzt bei "und jetzt?" im string rein? Stimmt das so?
 
Zuletzt bearbeitet:

balufreak

Mitglied
Thread Starter
Mitglied seit
12.10.2003
Beiträge
1.565
Ich brauche einfach nur den inhalt von Value in diesem Feld in einer Variable. Den Rest (restliches HTML) rund herum brauche ich nicht.
 

michanismus

Mitglied
Mitglied seit
23.08.2004
Beiträge
434
hi!

ich hab mal ebend nen regulären ausdruck gebaut.

sorry, war eben schnell nebenbei. falls jemand fehler findet bitte drauf hinweisen und berichtigen :)

Code:
<?

$subject='
	<html>
	<head></head>

	<body>
	<p> hier ein wenig inhalt...</p>
	<form>
		<input type="text" name="c_top" value="autos">
		<input type="img" name="d_top" value="flugzeug">
		<input type="text" name="x_top" value="macuser.de">
	</form>
	<p> und hier biss was :)</p>
	</body>
	</html>
	';

$pattern = "/(?:<input)?(?:value{1})(?:=)(?:[\"\']{1})([a-z0-9_\.]*)(?:[\"\']{1})(?:>)/si";
preg_match_all($pattern, $subject, $result);
echo "<pre>";
print_r($result);
echo "</pre>";

?>
´

das ganze sollte dir im array $result die ergebnisse liefern!


Code:
Array
(
    [0] => Array
        (
            [0] => value="autos">
            [1] => value="flugzeug">
            [2] => value="macuser.de">
        )

    [1] => Array
        (
            [0] => autos
            [1] => flugzeug
            [2] => macuser.de
        )

)
also $result[1][$i] sind deine values :)

so long, michi
 
Zuletzt bearbeitet:

balufreak

Mitglied
Thread Starter
Mitglied seit
12.10.2003
Beiträge
1.565
Kuuul Danke! Werde ich gleich Probieren! Ich werde mich wieder melden
 

balufreak

Mitglied
Thread Starter
Mitglied seit
12.10.2003
Beiträge
1.565
@michanismus:
Es funktioniert... Danke!
Werde mich jetzt mal richtig mit den regulären ausdrücken auseinander setzen.

Frohe Festtage!
 

michanismus

Mitglied
Mitglied seit
23.08.2004
Beiträge
434
Mach das :)
Frohe Festtage auch dir!