Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] PCRE und optionales (https://www.delphipraxis.net/23253-%5Bphp%5D-pcre-und-optionales.html)

CalganX 31. Mai 2004 15:41


[PHP] PCRE und optionales
 
Hi,
ich habe das selbe Problem bei zwei verschiedenen Websiten.
Beim ersten geht es um einen Klausurplan. Darin steht die Kursnummer in der Form Fach + L oder G (Leistungs- oder Grundkurs) + Schuljahr. Wobei das Schuljahr nicht immer da steht. Um den Fachnamen zu erkennen habe ich von einem anderen Schüler folgenden regulären Ausdruck bekommen:
Code:
preg_match("/^(.*)(L|G)(\d*|.*)$/i",$row["charKursNr"],$fach);
Funktioniert auch ganz gut.
Allerdings gibt es seit diesem Schuljahr noch weitere Kurs, in denen zwischen dem Fachnamen und dem L (bzw. dem G) noch ein e oder ein z steht, das nicht zum Fachnamen gehört.

Gibt es jetzt eine Möglichkeit PHP zu sagen, dass dieses e/z nur optional da ist?

Ein sehr ähnliches Problem habe ich bei der Erkennung von URL-Adressen. Generell habe ich folgenden Ausdruck (aus dem phpBB, bekommen von Daniel):
Code:
      $match[0] = '#(^|[\n ])([\w]+?://(.*?)[^ \t\n\r<"]*)#ie';
      $replace[0] = "'\\1<a href=\"\\2\" target=\"_blank\">' . ((strlen('\\2') > 40) ? substr('\\2', 0, 20) . ' ... ' . substr('\\2', -20) : '\\2') . '</a>'";
Allerdings suche ich jetzt nach einer Lösung, wie ich das Protokoll optional machen kann.
Also, dass
Code:
[\w]+?://
kommen kann, aber nicht muss.

Hoffentlich ist mein Problem einigermaßen verständlich angekommen. ;)

Hat jemand für das Problem/die Probleme eine Lösung?

Chris

mirage228 31. Mai 2004 15:44

Re: [PHP] PCRE und optionales
 
Hi,

zu den URLs ist mir noch eine Idee bekommen.

Wie wärs, wenn du einfach prüfst, ob ein Protokoll vorangestellt ist, und wenn nicht, dann hängst du einfach eines dran. Ist zwar nicht direkt mit RegEx gelöst, aber es sollte gehen...

mfG
mirage228

CalganX 31. Mai 2004 15:45

Re: [PHP] PCRE und optionales
 
Hi,
hmm... das muss aber einfacher gehen. :gruebel:
Es muss ja irgendwie gehen. ;) Laut der PHP-Dokumentation muss ich ein ? dahinter setzen, aber das funktioniert in keinem der beiden Fälle. :gruebel:

Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz