php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.10.2011, 08:10  
Neuer Benutzer
 
Registriert seit: 20.10.2011
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Horatio befindet sich auf einem aufstrebenden Ast
Standard preg_match HTML Datei auslesen

So, ich habe eine Datei mit etwas HTML darin:
Code:
		<li><span class="fakt">ID-Nummer</span>: #001</li>
		
		<li><span class="fakt">Deutscher Name</span>: Name</li>
		<li><span class="fakt">Englischer Name</span>: Name</li>
jetzt möchte ich die ID (ohne #), den deutschen und den englischen Namen auslesen... wie mache ich das?
Horatio ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.10.2011, 08:17  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

Hi.

Wie wäre es mit http://de.php.net/file_get_contents und http://www.it-academy.cc/article/722...+auslesen.html usw...

über google.de findest Du haufenweise Links zu dem Thema!

mfg Wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline   Mit Zitat antworten
Alt 20.10.2011, 08:23  
Neuer Benutzer
 
Registriert seit: 20.10.2011
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Horatio befindet sich auf einem aufstrebenden Ast
Standard

Okay, ich habe es jetzt mal mit preg_match() probiert:
PHP-Code:
preg_match('\<li\>\<span class\=\"fakt\"\>ID-Nummer\<\/span\>\: #([0-9]{1,3})\<\/li\>''<li><span class="fakt">ID-Nummer</span>: #493</li>'$treffer); 
Das ist dabei herausgekommen. Jetzt bekomme ich aber fehlermeldungen:+
Code:
Warning: Unterminated comment starting line 28 in ??? on line 28

Fatal error: fatal flex scanner internal error--end of buffer missed in ??? on line 28
Horatio ist offline   Mit Zitat antworten
Alt 20.10.2011, 08:29  
Erfahrener Benutzer
 
Registriert seit: 25.01.2009
Beiträge: 1.027
PHP-Kenntnisse:
Fortgeschritten
Capfly befindet sich auf einem aufstrebenden Ast
Capfly eine Nachricht über ICQ schicken Capfly eine Nachricht über MSN schicken
Standard

Bei preg_match fängt der erste Parameter immer mit einem Zeichen an, und endet mit dem gleichen, so z.B.:

PHP-Code:
$get preg_match("/Beispiel [0-9]/",$deineDatei); 
Hier die /
__________________
MfG
~Capfly
Jetzt NEU! Cpix & Wbits Katahlan.de - Das Browsergame
Capfly ist offline   Mit Zitat antworten
Alt 20.10.2011, 08:30  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

Schau Dir mal die Fehlermeldungen an:

http://www.php-resource.de/handbuch/function.header.htm

und

https://bugs.php.net/bug.php?id=35382

und check mal die Syntax von deinem preg_match Befehl! Die ist nicht korrekt!!

mfg wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline   Mit Zitat antworten
Alt 20.10.2011, 09:27  
Neuer Benutzer
 
Registriert seit: 20.10.2011
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Horatio befindet sich auf einem aufstrebenden Ast
Standard

Danke!

Ich habe jetzt 3 Parameter angegeben und es kommen keine Fehlermeldungen.
Allerdings wird mir die ID immer noch nicht angezeigt.

Geändert von Horatio (20.10.2011 um 09:59 Uhr).
Horatio ist offline   Mit Zitat antworten
Alt 20.10.2011, 09:45  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

Deine Syntax von preg_replace stimmt nicht! Schau mal hier: http://www.php.net/manual/de/function.preg-replace.php Brauchst 3 Parameter und nicht nur 2, wie bei Dir!! Außerdem meinst Du sicherlich preg_match (http://www.php.net/manual/de/function.preg-match.php) und nicht preg_replace!!!!

mfg Wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline   Mit Zitat antworten
Alt 20.10.2011, 10:03  
Neuer Benutzer
 
Registriert seit: 20.10.2011
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Horatio befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
<?php
$_url 
"url";
$_buffer file_get_contents($_url);
$row["id"] = preg_match('|/\<li\>\<span class\=\"fakt\"\>ID-Nummer\<\/span\>\: \#([0-9]{1,3})\<\/li\>/|''$1'$_buffer);
echo 
"$row[id]";
?>
So, alles verbessert. Allerdings bekomme ich als Antwort nur "0", auf der Webseite steht aber 001?!
Horatio ist offline   Mit Zitat antworten
Alt 20.10.2011, 10:31  
Benutzer
 
Benutzerbild von m0dpad
 
Registriert seit: 20.03.2011
Beiträge: 49
PHP-Kenntnisse:
Fortgeschritten
m0dpad befindet sich auf einem aufstrebenden Ast
Standard

http://simplehtmldom.sourceforge.net/ und http://www.php.net/manual/en/domdocument.loadhtml.php wären wohl auch noch eine Alternative, bei der du dich nicht um reguläre Ausdrücke kümmern musst.
__________________
Staticfloat
m0dpad ist offline   Mit Zitat antworten
Alt 20.10.2011, 12:12  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von Horatio Beitrag anzeigen
PHP-Code:
<?php
$_url 
"url";
$_buffer file_get_contents($_url);
$row["id"] = preg_match('|/\<li\>\<span class\=\"fakt\"\>ID-Nummer\<\/span\>\: \#([0-9]{1,3})\<\/li\>/|''$1'$_buffer);
echo 
"$row[id]";
?>
So, alles verbessert. Allerdings bekomme ich als Antwort nur "0", auf der Webseite steht aber 001?!
Nix verbessert. Eher: "Nichts richtig verstanden".

Preg_match() gibt 0 zurück, wenn der RegEx zwar syntaktisch korrekt ist, aber nichts passendes gefunden werden konnte. Du solltest deine Kenntnisse auf folgenden Feldern ausbauen:

1.) PHP-Handbuch lesen und verstehen lernen, damit du weißt, wie man die jeweilige Funktion richtig einsetzt.

2.) Reguläre Ausdrücke (den PCRE-Dialekt) wie sie in PHP angewandt werden. Vor allem die Bedeutung der "Sonderzeichen".

3.) Du arbeitest mit HTML. Ausgaben zur Kontrolle könnten daher in der Browser-Ansicht "verstümmelt" dargestellt werden. Schaue dir htmlspecialchars() an, mit dem man das verhindern kann.

--
zu 1.) Das gefundene Teilstück legt preg_match() in einer speziellen Variablen ab, die man preg_match() beim Aufruf mitgeben muss. Der Rückgabewert von preg_match() ist dagegen die Anzahl der gefundenen Teilausdrücke und der kann nur 0 oder 1 sein. Beispielanwendung:

PHP-Code:
$found preg_match($pcre$haystack$hits);
if (
$found) {
    
var_dump($hits);
}
else {
    echo 
'Nix gefunden.';
    if (!
is_int($found)) {
        echo 
' Wie auch? Der RegEx war nicht valide.';
    }

Die Variable, die ich hier $hits getauft habe, nennt man das "Treffer-Array". Dort finden sich nach einer erfolgreichen Suche alle Teilstücke der Zeichenkette auf die das angegebene Suchmuster (der RegEx) gepasst hat. Die Handbuch-Seite zu preg_match() beschreibt das ausführlich.

zu 2.)

Zitat:
'|/\<li\>\<span class\=\"fakt\"\>ID-Nummer\<\/span\>\: \#([0-9]{1,3})\<\/li\>/|'
Entscheide dich für (d)einen Delimiter. Ich bevorzuge '/' weil es das voreingestellte Zeichen ist. Andere zu verwenden, bringt nur selten Vorteile, weil man dann darauf achten muss, diese Zeichen zusätzlich zu escapen.

Schau dir außerdem an, welche Zeichen zusätzlich escaped werden müssen und wann (und wann nicht). Wenn du prophylaktisch alles mit einem Backslash versiehst, was dir unkoscher vorkommt, baust du eher Fehler ein, als etwas abzusichern. Folgender RegEx sollte genügen:

Code:
'/<li><span class="fakt">ID-Nummer<\/span>:\#([0-9]{1,3})<\/li>/i'
--

Falls du das Sucheregebnis weiterverarbeiten möchtest, gibt es noch das Problem der unterschiedlichen Datentypen. Soll aus der "ID" eine Ganzzahl werden, kann man sie nicht einfach per String-To-Integer-Cast umwandeln, weil Zahlen mit führender Null als Oktal-kodierte Zahlen interpretiert werden. Besser ist es, intval() zu verwenden und explizit die Basis 10 anzugeben.

--

Gibts einen Grund, warum du deine Variablennamen mit führenden Unterstrichen versiehst?
fireweasel ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
HTML Formulas kein Datei anhang in der email. IT-Airwolf PHP Einsteiger 13 05.08.2011 12:18
Mysql gespeicherte HTML Seite auslesen und via FTP übertragen Darky^ Datenbanken 3 29.05.2011 12:39
Echo Ausgabe in Html Datei schreiben tinol23 PHP Einsteiger 3 19.03.2011 10:06
XML Datei auslesen umsid1 PHP Einsteiger 5 13.12.2010 16:30
[Erledigt] definierte html Tabelle auslesen söffge PHP Tipps 2010 10 15.03.2010 15:50
[Erledigt] Datei auslesen und wenn 1 dann echo m0nst3rkill3r PHP Tipps 2009 19 22.01.2009 22:40
Funktion while() bzw. Datei auslesen und Kontinuierlich auslesen babyos PHP Tipps 2008 12 05.11.2008 18:47
Werte aus externer Datei auslesen und entsprechendes Bild einfügen Forumposter PHP Tipps 2008 12 21.10.2008 10:28
Daten aus einer txt Datei auslesen lassen Zangelo PHP Tipps 2006 4 29.05.2006 09:57
Externe HTML oder PHP Datei auslesen (von XAMPP ins WWW) PHP Tipps 2005-2 4 09.09.2005 08:12
emailadressen aus einer Datei auslesen PHP Tipps 2004-2 25 30.11.2004 14:47
*.dat Datei auslesen von unten nach oben! CHRIS PHP Tipps 2004-2 12 30.11.2004 14:15
Wie kann ich eine PHP Datei in eine HTML Datei umwandeln PHP Tipps 2004 2 12.08.2004 18:04
editieren von html datei??? PHP Tipps 2004 1 03.06.2004 22:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
preg_match html, seite in php einlesen preg match, preg_match http auslesen, mysql html daten einladen mit <span, preg_match von bis auslesen, preg_match daten lesen, preg_match sonderzeichen, php datei preg_match, php preg_match andere datei html, php datei preg_match auslesen, daten mit preg_match auslesen, preg_match(\'/$row[\id\]/\', alle links in html datei preg_match_all, preg_match li

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:14 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum