Regulärer Ausdruck

Regulärer Ausdruck

am 03.04.2008 11:05:12 von Hago Ziegler

Hallo,

ich habe diesen regulären Ausdruck:
preg_match("/(-|\s|^|\/)$knam/i", ...
er vergleicht die in einem Formular eingetragenen Namen mit denen in einer
Liste.

Ich habe die Option "i" gesetzt um Groß- und Kleinschreibung zu
ermöglichen.
Nun wollte ich neben dem "i" noch die Option "x" setzen, um noch vor oder
hinter dem Suchmuster ein Leerzeichen zu ermöglichen, aber das
funktioniert nicht.
Kann mir evtl. jemand sagen, was ich falsch mache?

Gruß, Hago

Re: RegulärerAusdruck

am 03.04.2008 11:29:49 von Sven Drieling

Hago Ziegler wrote:

Hallo,

> ich habe diesen regulären Ausdruck:
> preg_match("/(-|\s|^|\/)$knam/i", ...

> Nun wollte ich neben dem "i" noch die Option "x" setzen, um noch vor =
oder
> hinter dem Suchmuster ein Leerzeichen zu ermöglichen, aber das
> funktioniert nicht.

Der x-Modus dient dazu, dass man einen regulären Ausdruck kommentiere=
n
kann.

/ =20
\(? # optional parentheses
\d{3} # area code required
\)? # optional parentheses
[-\s.]? # separator is either a dash, a space, or a period.
\d{3} # 3-digit prefix
[-.] # another separator
\d{4} # 4-digit line number
/x

http://www.onlamp.com/pub/a/onlamp/2003/08/21/regexp.html



Für ein optionales Leerzeichen vor und hinter dem bisherigen Ausdruck=
ein
' ?' einfügen.

preg_match("/ ?(-|\s|^|\/)$knam ?/i", ...



tschuess
[|8:)

Re: Regulärer Ausdruck

am 03.04.2008 13:54:33 von steffen bruentjen

"Hago Ziegler" wrote:
>
>ich habe diesen regulären Ausdruck:
> preg_match("/(-|\s|^|\/)$knam/i", ...

Bei Variablen im regulären Ausdruck sollte man sich preg_quote()
angewöhnen:

preg_match('/ [-^\s\/]' . preg_quote($knam, '/') . ' /i', ...);


>er vergleicht die in einem Formular eingetragenen Namen mit denen in einer
>Liste.

Siehe eventuell auch preg_grep().


>Nun wollte ich neben dem "i" noch die Option "x" setzen, um noch vor oder
>hinter dem Suchmuster ein Leerzeichen zu ermöglichen, aber das
>funktioniert nicht.
>Kann mir evtl. jemand sagen, was ich falsch mache?

Ich glaube, Du verwechselst "Suchmuster" mit der "Eingabe" oder der
"Zeichenkette", welche zu matchen ist. /x ignoriert Leerzeichen *im
Suchmuster* und ist erst bei komplizierten Ausdrücken (Suchmustern)
sinnvoll.

Falls Du tatsächlich Suchmuster meinst, willst Du vielleicht nur
überflüssige Leerzeichen in $knam entfernen? Dann schau Dir trim()
bzw. array_map('trim', $namelist) an.


Schöne Grüße, Steffen

--
Das Tastaturlayout für Programmierer:
http://eurkey.steffen.bruentjen.eu

Re: Regulärer Ausdruck

am 03.04.2008 14:07:38 von Hago Ziegler

Hallo,

> Ich glaube, Du verwechselst "Suchmuster" mit der "Eingabe" oder der
> "Zeichenkette"...

Ja, das habe ich falsch verstanden.

> Falls Du tatsächlich Suchmuster meinst, willst Du vielleicht nur
> überflüssige Leerzeichen in $knam entfernen? Dann schau Dir trim()

Ja, das ist es. Daran habe ich gar nicht gedacht. Das ist ja viel
einfacher.

Danke.

Hago

Re: Regulärer Ausdruck

am 04.04.2008 00:06:49 von Niels Braczek

Hago Ziegler schrieb:

>> Ich glaube, Du verwechselst "Suchmuster" mit der "Eingabe" oder der
>> "Zeichenkette"...
>=20
> Ja, das habe ich falsch verstanden.

Warum antwortest du nicht auf das Posting, auf das du dich beziehst?

MfG
Niels

PS: Die Frage ist rhetorisch.

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: Regulärer Ausdruck

am 04.04.2008 08:03:16 von Hago Ziegler

Niels Braczek schrieb:

> Warum antwortest du nicht auf das Posting, auf das du dich beziehst?

Manchmal bin ich im Zweifel, wie ich reagieren soll, zB. wenn ich auf eine
Frage mehrere Antworten bekomme, von freundlichen Leuten, die alle mehr
oder weniger das Gleiche sagen.
Da macht es keinen Sinn, sich bei jedem Einzelnen zu bedanken und mehr
oder weniger gleich zu antworten.
Deshalb stelle ich dann eben manchmal eine Antwort ans Ende der Reihe
betroffener Postings, um so eine Art Kompromiss zu erreichen.

Hago

Re: Regulärer Ausdruck

am 04.04.2008 14:45:18 von Claus Reibenstein

Hago Ziegler schrieb:

> Niels Braczek schrieb:
>
>> Warum antwortest du nicht auf das Posting, auf das du dich beziehst?
>
> Manchmal bin ich im Zweifel, wie ich reagieren soll, zB. wenn ich auf eine
> Frage mehrere Antworten bekomme, von freundlichen Leuten, die alle mehr
> oder weniger das Gleiche sagen.

Das ändert nichts daran, dass Deine Antwort nicht zu dem Posting gehört,
dem zu sie zugeordnet hast. Das erschwert das Lesen: Wenn jemand mit dem
Zitat nichts anfangen kann und mal eben schnell ins Original schauen
möchte, kann er das nicht zun, sondern muss dieses Original erst einmal
suchen. Bei diesem Thread (bis jetzt 6 Postings) mag das vielleicht noch
angehen. Wenn aber die Zahl der Antworten 2- oder gar 3-stellig wird
(was gar nicht so selten vorkommt) ...

> Da macht es keinen Sinn, sich bei jedem Einzelnen zu bedanken und mehr
> oder weniger gleich zu antworten.

Was spricht dagegen, Einem zu antworten und sich in dieser Antwort
pauschal auch bei allen anderen zu bedanken?

> Deshalb stelle ich dann eben manchmal eine Antwort ans Ende der Reihe
> betroffener Postings, um so eine Art Kompromiss zu erreichen.

Mag sein, dass Du sie ans Ende gestellt hast. Bei mir befindet sich dort
das Posting, auf das Du geantwortet hast. Deine Antwort befindet sich
hingegen ziemlich zusammenhanglos irgendwo in der Mitte (Stichwort
"Sortierreihenfolge").

Gruß. Claus

Re: Regulärer Ausdruck

am 04.04.2008 15:07:55 von Markus Deckmann

Hi Claus,

> Was spricht dagegen, Einem zu antworten und sich in dieser Antwort
> pauschal auch bei allen anderen zu bedanken?

Naja, hier kann ich den Poster schon irgendwie verstehen. Ich habe dabei
auch immer irgendwie den Gedanken "Fühlen sich die auf dessen Postings
ich mich nicht direkt bedankt hab (mit Ausnahme des einen auf dessen
Posting ich geantwortet habe) vielleicht jetzt benachteiligt weil sie
auch Tipps gegeben haben aber nur mit einer "globalen" Danksagung
"belohnt" wurden?".

Ich versuche es so zu halten, das ich nach Abschluß der gesamten
Diskussion eine Antwort auf meinen eigenen Beitrag schreibe und mich in
diesem bei allen für die Hilfe bedanke. Das hat sich bis jetzt als recht
praktikabel und gern gesehen herausgestellt.


> Mag sein, dass Du sie ans Ende gestellt hast. Bei mir befindet sich dort
> das Posting, auf das Du geantwortet hast. Deine Antwort befindet sich
> hingegen ziemlich zusammenhanglos irgendwo in der Mitte (Stichwort
> "Sortierreihenfolge").

Den Dank Baummäßig zu versuchen an eine bestimmte Stelle einzuordnen ist
natürlich Quatsch. Da der Poster nie wissen kann welche
Sortierreihenfolge bzw. Filter der Lesende gesetzt hat muss das schief
gehen. Die oben genannter Methode finde ich allerdings ganz praktikabel,
weil es dabei egal ist welche Sortierreihenfolge du eingestellt hast, du
erhältst die Danksagung wenn dann als Antwort auf das absolute
Ursprungsposting der Diskussion.

Ciao Markus

Re: Regulärer Ausdruck

am 04.04.2008 15:37:40 von Niels Braczek

Hago Ziegler schrieb:
> Niels Braczek schrieb:
>=20
>> Warum antwortest du nicht auf das Posting, auf das du dich beziehst?
>=20
> Manchmal bin ich im Zweifel, wie ich reagieren soll, zB. wenn ich auf e=
ine =20
> Frage mehrere Antworten bekomme, von freundlichen Leuten, die alle mehr=
=20
> oder weniger das Gleiche sagen.

Das ist ganz einfach: antworte auf das Posting, das du zitierst.

> Da macht es keinen Sinn, sich bei jedem Einzelnen zu bedanken und mehr =
=20
> oder weniger gleich zu antworten.

Das ist absolut richtig, passt hier aber nicht. Du hast Sven
geantwortet, dich aber ausschließlich auf Steffen bezogen.

> Deshalb stelle ich dann eben manchmal eine Antwort ans Ende der Reihe =

> betroffener Postings, um so eine Art Kompromiss zu erreichen.

In dem Fall mach es, wie Markus vorschlägt: antworte deinem
Ursprungsposting. Das ist das Einfachste und Übersichtlichste.

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------