php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.12.2006, 10:54  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von Denise
Tja, das war das erste was ich gemacht habe. Hat allerdings nichts gebracht.
Dann hast du es eben falsch gemacht.

Zitat:
Zitat von Denise
Wasss isssn hier eigentlich plötzlich los. Bisher war ich gewohnt das die Leute hier freundlich und hilfsbereit sind. Echt schade!
Wieder diese 08/15 Antworten!
Wenn es deine Website ist, lager die Daten (Texte) in eine Datenbank oder XML-Datei aus, dann kannst du von verschiedenen Skripten auf die Daten zugreifen und musst sie nicht erst extrahieren.
Aber halt, lass mich raten, das machst du eh nicht.
Bin gespannt welche Ausrede dir dafür einfällt.
Zergling-new ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 05.12.2006, 17:17  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

@M3g4: Danke Ehrlich gesagt hab ich mich schon gefragt, wie man zwischen greedy und lazy wechselt, aber bisher kam ich nich in die Versuchung nachzuschauen

Zitat:
Zitat von Denise
Du willst einen Ansatz sehen? Hmm, muss mal überlegen wie wir das machen können. Videokonferenz? Dann könntest ja dabei zusehen wenn ich wie gestern fast 2 Stunden suche und rumprobiere. Oder wie könnte ich Dir sonst noch zeigen, dass ich immer erst selbst versuche dahinter zu kommen und wenn garnix mehr geht erst dann in ein Forum schreibe in der Hoffnung dass auch mir geholfen wird, so wie auch ich anderen versuche bei Themen wo ich mich gut auskenne zu helfen?
Du probierst also 2h aus, um dann alles wegzuwerfen und hier nur zu schreiben "Macht mir das mal!"? Da kann man doch (auszugsweise) seine eigenen Versuche hier schildern, damit wir sehen, was du versucht hast, damit wir uns vielleicht dann noch wündern können "Hätte doch eigentlich funktionieren müssen!"

Bitte nicht lesen!
Zitat:
erklär uns, woran genau du warum scheiterst und weihe uns in deine Gedanken ein
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 05.12.2006, 18:01  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

wow, statt dieser liste an flames wär ne produktive antwort aber schneller gegangen. leute, denkt an eure pumpe! und wenn man etwas nicht weiß, braucht man nicht antworten.

1/ in diesem falle veranlaßt das ? dass das vorgehende ausdrucksliteral ( . ) nur minimal viele zeichenfindet. normalerweise schluckt preg soviele zeichen wie der ausdruck erlaubt. stichwort greedy wurde schon genannt.
bei einem U Parameter kehrt sich die ganze Geschichte übrigens um...

2/ entscheidend ist, was mit Klammern gematcht wird. du könntest also [b] variabel halten: #(?:(.*?)(?:)#i würde jetzt einen Satz mit oder ohne [b] tags finden. i stellt sicher, dass auch großgeschriebene Tags erlaubt sind.
Über die Klammern (?: ) kannst du ja selbst forschen

griß --n
nikosch ist offline  
Alt 05.12.2006, 18:25  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Dann doch noch ma ne Frage von meiner Seite aus.

1. Wenn U die Geschichte umdreht, wäre es doch identisch dazu, dass man das Fragezeichen einfach weglässt, oder nich?
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 05.12.2006, 23:11  
CIX88
Gast
 
Beiträge: n/a
Standard

EDIT:

Das mit der „Gier” ist ein Zusammenspiel von Suchpattern und Parametern (Modifer).

$text = "
text 1234 text
text 5678 text
";

PHP-Code:
'~[b](.*)[/b]~s' 
- ist gierig, da ? fehlt, sucht auf max. anzahl

PHP-Code:
'~[b](.*)[/b]~sU' 
- ist nicht gierig, da Modifer U gesetzt ist

PHP-Code:
'~[b](.*?)[/b]~s' 
- ist nicht gierig, da * und ? gesetzt ist

PHP-Code:
'~[b](.+)[/b]~s' 
- ist gierig, da + gesetzt ist, sucht auf max. anzahl

PHP-Code:
'~[b](.+)[/b]~sU' 
- wird nicht gierig, der umgedrehte Fall da Modifer U

PHP-Code:
'~[b](.*?)[/b]~sU' 
- ist gierig, da Modifer U das Verhalten von *? umkehrt, sucht auf max. anzahl

Modifer s ist mit Absicht benutzt worden, um die kleine Beispiele über mehrere Zeilen zu testen.
Erst dann kann man das Verhalten von „Gier” besser nachvollziehen.

Sonstiges:
. = entspricht einen beliebige Zeichen, ausser \n etc..
? = Min/Max-Quantor {0,1}, gar nicht oder nur einmal
* = Min/Max-Quantor {0,}, gar nicht oder beliebig oft
+ = Min/Max-Quantor {1,}, mind. einmal, oder beliebig oft
 
Alt 06.12.2006, 00:33  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Nö, falsch würde ich sagen


.* ist generell greedy ohne Parameter U
.*? ist generell ungreedy ohne Parameter U
.*? ist generell greedy mit Parameter U
.* ist generell ungreedy mit Parameter U
ebenso .+ bzw. .+?

(Unterschied: * = 0-n , + = 1-n)

ein U entspricht also dem Verfahren hinter jedes 0-n oder 1-n Zeichen erkennende 'Literal' ein ? zu setzen
generell sind ausdrücke ohne U immer gierig, an jeder Stelle. deshalb ist es oft sinnvoller, das Such-Zeichen wenn möglich einzuschränken, z.B.
statt
Code:
#<u>(.*?)</u>#
Code:
#<u>([^<]*)</u>#
zu schreiben, analog das allgemeine Beispiel:
Code:
#<([^>]+)>([^<]*)</\1>#
Erklärung: Statt .* wird eine Klasse aller Zeichen, die nicht öffnende spitze Klammer sind verwendet, denn das ist für Html-CDATA verbindlich. Im Text müssen dann natürlich alls spitzen Klammern mit &lt; oder &gt; umgesetzt sein. Das letzte Bsp. idst nur grob, denn es würde auch ungültige Tags 'matchen'...
nikosch ist offline  
Alt 06.12.2006, 05:07  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Gibs ma ne Pauschalninfo?

Also soweit ich das grad ma verstanden habe is CIX vollkommen falsch. Der Modifierier U markiert eine RegEx als lazy. Insofern wär das genannte eh falsch. Aber unabhängig davob versteh ich die Kombination von (.*?) und U nicht, da sie doch irgendwo das selbe darstellen
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 06.12.2006, 07:23  
CIX88
Gast
 
Beiträge: n/a
Standard

Zitat:
Nö, falsch würde ich sagen
Jo hast recht, hab mich jetzt jetzt selber geirrt und richtig gestellt ^^^

Zitat:
Gibs ma ne Pauschalninfo?
Nein, aber man muss ja nicht immer den Modifer U benutzen.
Dann prägt sich das besser ein.

Zitat:
versteh ich die Kombination von (.*?) und U nicht
Das ungreedy von *? wird mit dem Modifer U wieder aufgehoben bzw. umgekehrt.
Eigentlich braucht man den Modifer U gar nicht.

Mit dem Modifer U kann man allerdings auf die Fresse fliegen, wenn man im Suchpattern nach unterschiedlichen greedy und ungreedy suchen muss.
 
 


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
hilfe bei preg_match suchmuster M0J01812 PHP Tipps 2008 3 27.08.2007 09:47
Array durchsuchen mit suchmuster ? cytrobic PHP Tipps 2006 2 23.08.2006 14:28
ereg_replace - Sonderzeichen als Suchmuster NetLook PHP Tipps 2006 5 26.04.2006 20:32
preg_replace ersetzt auch falsche Suchmuster ruferp PHP Tipps 2006 1 10.04.2006 16:17
2 Suchmuster für Satz?! Broadcast PHP Tipps 2006 8 12.01.2006 19:07
Suchmuster: "wenn nicht" PHP Tipps 2006 3 05.01.2006 14:18
Suchmuster hunzi PHP-Fortgeschrittene 4 05.01.2006 12:16
suchmuster finden {m-d} PHP Tipps 2005 2 08.05.2005 09:19
preg_replace, mixed Suchmuster, mixed Ersatz problem? PHP Tipps 2004 5 27.10.2004 15:18
Suchmuster für URLs PHP Tipps 2004 2 21.10.2004 08:06
Funktionen Erklärung TheSkaterFriend PHP Tipps 2004 14 11.06.2004 22:05

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
suchmuster php preg_match, preg_match spitze klammer, preg_match quantoren

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:03 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.