Paules-PC-Forum.de Anzeige:

Unser Bundesliga-Tippspiel!


Zurück   Paules-PC-Forum.de > Infothek - die große Wissensdatenbank > Schreibstube

Schreibstube Jeder Besucher kann eigene Artikel und Hilfestellungen für die Infothek schreiben!

Bundesliga-Tippspiel

Paule bei Twitter


Windows Live
Empfehlung!

Das Buch zu
Windows Live!

- Windows Live Hotmail
- Windows Live Foto
- Windows Live Kalender
- Adressverwaltung
- SkyDrive
- Gruppenverwaltung
- Kindersicherung
- und vieles mehr!

für XP, Vista und Windows 7

Letzte Forenthemen
Gehe zum ersten neuen Beitrag Outlook 2002 Spamfilter...
Aufrufe: 77, Antworten: 7
Wie spielt man eine einzelne...
Aufrufe: 26, Antworten: 2
xp neu aufsetzen
Aufrufe: 183, Antworten: 12
Wie lange lässt Web.de Mails...
Aufrufe: 53, Antworten: 5
PureBasic
Aufrufe: 30, Antworten: 7
Verzögerungsschaltung...
Aufrufe: 95, Antworten: 6
Dell Dimension 8300 aufrüsten.
Aufrufe: 26, Antworten: 1
Grafik Problem
Aufrufe: 43, Antworten: 1
mehrere form tags
Aufrufe: 68, Antworten: 5
Drucker druckt...
Aufrufe: 36, Antworten: 1
Zeige:

XP-Registry voll im Griff

+ mehr Leistung!
+ mehr Stabilität!
+ mehr Sicherheit!
+ 352 Seiten!
+ 400 Abbildungen!
+ mit CD-ROM!
+ nur 19,95 Euro!

Vista für Genervte!

+ Hilfe zur Selbsthilfe!
+ Vista Probleme lösen!
+ kein Fachchinesisch!
+ 386 Seiten!
+ 276 Abbildungen!
+ nur 19,95 Euro!


Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08.04.2009, 02:28   #1 (Direktlink)
Stammuser
 
Registriert seit: 14.02.2007
Alter: 17
Beiträge: 494
Idee [PHP] Preg_match ( Grundkentnisse Vorausgesetzt )

Autor: Destruction

Nabend,
ich möchte euch eine ganz kurze Einführung in Preg_match schreiben.

=> Wofür benutzt man preg_match?
Preg_match kann man nutzen um zu checken ob ein String einem bestimmten Muster entpricht oder um Daten aus einer Datei bzw. einer Homepage zu holen.

Das 2. werde ich euch heute erklären
( es kommt dann evtl. noch eine weiterführung falls Interesse besteht mit allen RegEx Beschreibungen )

Der einfachste weg um Daten aus einer Datei zu holen ist (.*?)
"." = Jedes beliebiges Zeichen
"*" = Soll 1 mal oder mehr vorkommen
"?" = Normalerweise : Darf vorkommen, muss es aber nicht -> In unserem Fall bringt dies, dass so wenig wie möglich rausgeholt wird. "(.*)"= So viel wie möglich.

So und an welchem Beispiel könnte man es besser erklären als PPF

Wir wollen uns die aktuellen Beiträge auslesen lassen.
So schaut man sich den Quelltext von PPF an sieht man bei (fast) jedem Beitrag den folgenden Aufbau:
HTML-Code:
<a href="http://www.paules-pc-forum.de/forum/ueber-das-forum/113010-heute-grosser-livechat.html" style="white-space:nowrap" ><strong>Heute großer Livechat!</strong></a></span>
Das "fast" steht da, weil noch bei manchen Beiträgen ein "title" rangehängt ist...
Also 1. Schritt:
PHP-Code:
$file file_get_contents("http://www.paules-pc-forum.de/forum"); 
Die Daten von PPF holen sollte der 1. Schritt sein...
Der 2. Schritt ist nun unser preg_match...
Wir benutzen jedoch preg_match_all , was die selbe Funktionen hat, jedoch gibt es einen entscheidenden Vorteil:
preg_match_all durchsucht eine ganze Datei
preg_match durchsucht eine Datei nur bis zum 1. Fund!
Nehmen wir noch mal das Beispiel:
HTML-Code:
<a href="http://www.paules-pc-forum.de/forum/ueber-das-forum/113010-heute-grosser-livechat.html" style="white-space:nowrap" ><strong>Heute großer Livechat!</strong></a></span>
Nun kommen unsere (.*?) ins Spiel.
PHP-Code:
preg_match_all('@<a href="(.*?)" style="white-space:nowrap" ><strong>(.*?)</strong></a></span>@',$file,$matches); 
Vor und nach dem preg_match_all RegEx muss ein Zeichen sein...
Die Zeichen die euch interessieren sollten:
@
#
/
Ich habe nun zu dem @ gegriffen, da es in meinem String nicht vorkommt und ich somit die anderen @ zeichen nicht escapen muss.
Hätte ich nun ein "/" genommen, hätte ich das </a> escapen müssen, d.h. ein "\" davor setzen müssen. Dies kennt ihr sicherlich auch schon aus anderen Funktionen.

So der 2. Parameter ist der zu durchsuchende String, in unserem Falle $file.
3. Parameter: Die Suchergebnisse
PHP-Code:
<?php
$file 
file_get_contents("http://www.paules-pc-forum.de/forum");
preg_match_all('@<a href="(.*?)" style="white-space:nowrap" (title="Zum ersten ungelesenen Beitrag im Thema \'(.*?)\' gehen")?><strong>(.*?)</strong></a></span>
@'
,$file,$matches);
print_r($matches);
?>
Da wie schon gesagt manchmal ein "title" vorkommt klammern wir dies ein und machen ein "?" danach.
"?" = Darf 1 oder 0 mal vorkommen

Wenn wir uns nun mit print_r($matches) das Ergebnis ausgeben lassen, sehen wir mehrere Arrays.

Uns interessiert der 1. Array [0] .
Unsere Ergebnisse sind nun in $matches[0][0] , $matches[0][1] , ... gespeichert.
Um diese nun ausgeben zu lassen benutzen wir die "for" Schleife, die ich nun hier nicht erklären werde, da diese Schleife zu den Grundkentnissen gehört.

PHP-Code:
<?php
$file 
file_get_contents("http://www.paules-pc-forum.de/forum");
preg_match_all('@<a href="(.*?)" style="white-space:nowrap" (title="Zum ersten ungelesenen Beitrag im Thema \'(.*?)\' gehen")?><strong>(.*?)</strong></a></span>
@'
,$file,$matches);
for(
$i=0;$i 34;$i++) {
    echo 
$matches[0][$i]."<br>";
}
?>
Es gibt insgesamt 33 Ergebnisse also soll $i kleiner als 34 sein!
( deswegen $i < 34 )

So ich hoffe ihr habt alles verstanden.
Falls noch Interesse besteht kann ich das Tutorial erweitern und noch richtige RegEx Suchen erklären.

MfG

Geändert von Destruction (08.04.2009 um 02:39 Uhr)
Destruction ist offline   Mit Zitat antworten
Alt 08.04.2009, 13:14   #2 (Direktlink)
Stammuser
 
Registriert seit: 14.02.2007
Alter: 17
Beiträge: 494
Standard

PS.: Freue mich auch über Feedback.
Destruction ist offline   Mit Zitat antworten
Alt 11.04.2009, 00:22   #3 (Direktlink)
Super-Moderator
 
Benutzerbild von michi
 
Registriert seit: 07.12.2002
Ort: Oldenburg
Alter: 38
Beiträge: 11.854
Standard

Entschuldige, aber so können wir das nicht verwenden, selbst wenn ich den Text etwas umbaue. Dein Entwurf setzt einfach zuviel Vorwissen voraus.
Ich habe mir deinen Text durchgelesen und weiß immer noch nicht mehr als voher.

Kannst du den Artikel vielleicht aus Sicht eines Laien schreiben?
__________________
Mit freundlichen Grüßen
michi

Geändert von michi (01.08.2009 um 00:53 Uhr)
michi ist gerade online   Mit Zitat antworten
Alt 14.04.2009, 20:55   #4 (Direktlink)
Stammuser
 
Registriert seit: 14.02.2007
Alter: 17
Beiträge: 494
Standard

Zitat:
Zitat von michi Beitrag anzeigen
Entschuldige, aber so können wir das nicht verwenden, selbst wenn ich den Text etwas umbaue. Dein Entwurf setzt einfach zuviel Vorwissen voraus.
Ich habe mir deinen Text durchgelesen und weiß immer noch nicht mehr als voher.

Kannst du den Artikel vielleicht aus Sicht eines Laien schreiben?
lol...
Das setzt nicht "zu viel" Vorwissen voraus!
Das sind standardbefehle die man kennt wenn man GANZ AM ANFANG vom Programmieren ist.
Klar , für jemanden der keinen Plan von PHP hat ist es sicherlich schwer und deswegen steht auch dabei dass man ein wenig Grundwissen mitbringen sollte.
Falls kein Interesse besteht, kann das Tutorial auch gerne gelöscht werden.
MfG

Geändert von michi (01.08.2009 um 00:54 Uhr)
Destruction ist offline   Mit Zitat antworten
Alt 31.07.2009, 20:10   #5 (Direktlink)
Super-Moderator
 
Benutzerbild von Bassboy
 
Registriert seit: 29.08.2006
Ort: Nähe München
Beiträge: 2.812
Standard

Es ist grundlegend normales PHP, aber kein PHP-Neuling würde das lesen geschweige denn brauchen und benutzen wollen. Es ist gut zum nachlesen, aber mir fehlt eindeutig die Objektivität - und der Schreibstiel wurde auch nicht komplett eingehalten.

Vielleicht solltest du es nur überarbeiten und ein Wenig umformulieren. Weil preg_matches in PHP sind nicht jedermanns Sache, aber doch öfters wichtig und sinnvoll!
Bassboy ist gerade online   Mit Zitat antworten
Antwort

  Paules-PC-Forum.de > Infothek - die große Wissensdatenbank > Schreibstube

Lesezeichen

Themen-Optionen
Ansicht

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

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Regular expression mit preg_match oelsi PHP/MySQL 2 20.05.2007 15:41
Problem mit preg_match() Eckard41 PHP/MySQL 3 23.02.2005 22:45



Alle Zeitangaben in WEZ +2. Es ist jetzt 20:09 Uhr.


Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.2
Powered by vBCMS® 2.7.0 ©2002 - 2010 vbdesigns.de
Template-Modifikationen durch TMS
(c) Paules-PC-Forum.de

::: Impressum :::