Seite 1 von 1

[gelöst] php, preg_match, Probleme mit der Syntax

Verfasst: 11.07.2005 16:56
von shwepsi
Hallo,
ich versuche gerade aus einem Text einen Teil herauszufiltern.
Dieser Text sieht in etwa so aus:

Code: Alles auswählen

<!----><a href=\"show_profile.php?uid=197542\">
ich muss nach diesem Part suchen, da einige male das show_profile kommt
am <!----> erkennt man das es das richtige ist
Haben will ich schliesslich die Nummer, die eine beliebige Länge haben kann, darum habe ich von strstr() & Co abstand genommen.

Ist das irgendwie möglich? Und wenn ja wie ist der erste Parameter von preg_match, oder würdet ihr das ganz anders machen??

EDIT: gelöst, vergessen hatte anzumerken

Re: php, preg_match, Probleme mit der Syntax

Verfasst: 11.07.2005 17:44
von Blutgerinsel
shwepsi hat geschrieben:Ist das irgendwie möglich?
ja
Und wenn ja wie ist der erste Parameter von preg_match
Suche nach der eierlegenden Wollmilchsau ist wohl der treffendere Topictitel als Problem
oder würdet ihr das ganz anders machen??
ja und zwar 2 Tags in der Art

[uid="5345"]Profil von XY[/uid]
[uid]5345[/uid]

Im Grunde dennoch zu wenig Informationen ob wie und was nochmals für was verwendet wird oder für den Fall XY und Fall ZZ etc.

Anm.: Ich sehe nicht mal deine Versuche :roll:

Re: php, preg_match, Probleme mit der Syntax

Verfasst: 11.07.2005 18:35
von shwepsi
Edit hat geschrieben:So, das ist eine Möglichkeit, aber zufrieden bin ich noch nicht:
'/<!----><a href="show_profile.php\?uid=([0-9]{4}|[0-9]{5}|[0-9]{6}|[0-9]{7}|[0-9]{8})">/'
zu bemängeln ist das ich für jede Länge ein subpattern machen muss, das geht doch sicher auch einfacher ...
Blutgerinsel hat geschrieben:
shwepsi hat geschrieben:Ist das irgendwie möglich?
ja
na nett das du schon fast geholfen hast
Blutgerinsel hat geschrieben:
shwepsi hat geschrieben:Und wenn ja wie ist der erste Parameter von preg_match
Suche nach der eierlegenden Wollmilchsau ist wohl der treffendere Topictitel als Problem
Empfehlung: der Knigge, eine schöne Lektüre
Blutgerinsel hat geschrieben:
shwepsi hat geschrieben:oder würdet ihr das ganz anders machen??
ja und zwar 2 Tags in der Art

[uid="5345"]Profil von XY[/uid]
[uid]5345[/uid]
hmm ... blöd nur das ich da keinen Zugriff habe.
Es geht um genau zu sein um das portieren eines Funpic Boards auf phpBB. Das Funpic da kein Backup gibt ... ist ärgerlich, und deshalb zerlege ich halt die HTML Seiten...
deine Möglichkeit ist schön ... aber hier leider nicht möglich...
Blutgerinsel hat geschrieben:Im Grunde dennoch zu wenig Informationen ob wie und was nochmals für was verwendet wird oder für den Fall XY und Fall ZZ etc.
Naja, stell dir eine ellenlange html Datei vor, von funpic.de
Die gesuchte Stelle ist an dem <!----> & dem direkt darauffolgendem <a href="show_profile.php?uid= zu identifizieren. Das <!----> kommt je nach Beitrag mehrfach vor, und das show_profile selber auch bis zu 3 mal
(in die Tabellenzellen zerlegt hat)
und ich brauche halt da das <!----><a href="show_profile.php?uid=197542">

deutlich genug? oder willst du den html Code?
(von mir aus inkl. dem Rest, der bisher UID des Posters, posting time, posting title, posting_id, poster (- moderatoren Anhängsel) und editet am herausfiltert und in einem Array abbildet. Dabei werden die Sachen schon wieder mit unhtmlspecialchars bearbeitet (nein, kein PHP befehl, preg_replace war die Lösung), da phpBB sonst das & aus &auml; in ein Entity verwandeln würde.
Blutgerinsel hat geschrieben:Anm.: Ich sehe nicht mal deine Versuche :roll:
ich habe zig Versuche, aber habe erst zum schluss die Versuche in Kommentare gepackt.
Hier die die ich dort noch habe:
'#<!----><a href="show_profile.php?uid=([0-9])"#'
"/\[<!----><a href="show_profile.php\?uid=(\#[0-9])"/"
'#<!----><a href="show_profile.php?uid=(0-9)"#'
'[<!----><a href="show_profile.php?uid=]([0-9])["]#'
'[<!----><a href=\"show_profile.php\?uid=]([0-9])["]#'

ich hoffe das reicht dem Meister jetzt und er kann mir vielleicht eine Lösung bieten. Nett wäre auch eine Erklärung warum so und nicht anders, diese ist aber nicht sooo wichtig, schliesslich kenne ich php.net auch, und kann es nachlesen und mir dann erschliessen.

Verfasst: 11.07.2005 22:50
von Pyramide
Was du suchst ist das + Zeichen, welches für "ein oder mehr Zeichen" steht; also z.B.

Code: Alles auswählen

<!----><a href=\"show_profile.php?uid=([0-9]+)\">
Statt [0-9] kannst du übrigens auch \d (bzw. in einem String dann \\d) verwenden.

Siehe auch http://de.php.net/manual/de/reference.p ... syntax.php

Verfasst: 11.07.2005 23:05
von shwepsi
Pyramide hat geschrieben:Was du suchst ist das + Zeichen, welches für "ein oder mehr Zeichen" steht; also z.B.

Code: Alles auswählen

<!----><a href="show_profile.php?uid=([0-9]+)">
Statt [0-9] kannst du übrigens auch \d (bzw. in einem String dann \\d) verwenden.

Siehe auch http://de.php.net/manual/de/reference.p ... syntax.php
danke !!
*das einige male gebrauchen kann*

Verfasst: 12.07.2005 12:57
von Blutgerinsel
Auch dieser Patternauswerter könnte für dich von Vorteil sein
-> http://pcre.nophia.de/evaluate/index.php

daneben noch etliche Erklärungen zu Metazeichen, Quantifier etc.
-> http://pcre.nophia.de/explain/index.php

und sogar noch dieses Tutorial
-> http://www.php-resource.de/tutorials/read/10/1/