anzeige

[Geändert] Reguläre Ausdrücke


Seite: 1 2 3
Autor Beitrag
Abgemeldet
09.01.10 - 17:19:31 Uhr

Hallo,

bin grade dabei mir ein Suchscript zu schreiben (ich weiß es gibt fertige Scripte, aber ich will mir was eigenes schreiben). Dafür verwende die Funktion preg_match_all(), soweit alles gut. Die fertige Funktion sieht dann so aus:
$search = preg_match_all($find,$doc,$result,PREG_PATTERN_ORDER);
Das ganze spuckt leider diesen Fehler hier aus: Delimiter must not be alphanumeric or backslash. Ich weiß ja was dieser Fehler heißt, aber ich weiß nicht wie ich ihn beheben kann, habt ihr da eine Idee?

MfG
ricolabi
SammysHP
09.01.10 - 18:32:39 Uhr

Du hast einen Fehler in deinem RegEx. Zeig am besten mal. Vermutlich hast du einfach nur nicht den Anfang und das Ende markiert (Bsp: "@bla[a-z]+?@i").

_________________
www.sammyshp.de
feuerfuchs
09.01.10 - 19:03:25 Uhr

@SammysHP hat wahrscheinlich recht. Weiterhin empfiehlt es sich, den Suchstring zu escapen:
  1. <?php   
  2. $find '@' str_replace('@'''preg_quote($find)) . '@';   
  3. ?>  

______________
PyChat
PyFix
Pytal-RSS-Feed
SammysHP
09.01.10 - 19:21:14 Uhr

@feuerfuchs
preg_quote() hat einen extra Delimiter-Parameter, man kann sich das str_replace() also sparen.
  1. <?php     
  2. $find '@' preg_quote($find'@') . '@';  


Alternativ kann man auch noch mit \Q und \E arbeiten.
  1. <?php     
  2. $find '@\Q' $find '\E@';  


_________________
www.sammyshp.de
feuerfuchs
09.01.10 - 19:24:09 Uhr

Oh, wie Recht du doch hast.

  1.    1. <?php     
  2.    2. $find '@' preg_quote($find'@') . '@';     
  3.    3. ?>    

______________
PyChat
PyFix
Pytal-RSS-Feed
SammysHP
09.01.10 - 19:40:36 Uhr

Reguläre Ausdrücke sind schon was schönes. Wenn man neu mit ihnen arbeitet, sind sie eine Qual und machen mehr Mist, als sie Nutzen haben. Wenn man aber mit ihnen umgehen kann, sind sie eine wahre Arbeitserleichterung.

_________________
www.sammyshp.de
Abgemeldet
10.01.10 - 12:00:48 Uhr

Danke für eure Antworten. Was Reguläre Ausdrücke angeht, bin ich ein Anfänger.

@SammysHP: was genau willst du von meinem Code sehen? RegEx, was ist das?

@feuerfuchs: Das werde ich dann mal noch einbauen.
Michi
10.01.10 - 13:17:33 Uhr

Was SammysHP mein, ist der Inhalt von $find in deinem Code:
$search = preg_match_all($find,$doc,$result,PREG_PATTERN_ORDER);

Darin steht nämlich die sogenannte Regular Expression, kurz RegEx oder RegExp, auf deutsch der "reguläre Ausdruck", nach dem die Zeichenkette $doc durchsucht wird.
Abgemeldet
10.01.10 - 14:05:37 Uhr

Jo, hatte eben auch mal gegoogelt. Aber trotzdem danke für die Erklärung.
SammysHP
10.01.10 - 15:39:19 Uhr

Und? Wie sieht das ganze jetzt bei dir aus?

_________________
www.sammyshp.de
Seite: 1 2 3

- Obige Beiträge stellen keine Äußerung oder Meinung von Pytal oder dessen Betreiber dar -