Einzelnen Beitrag anzeigen

CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

[PHP] PCRE und optionales

  Alt 31. Mai 2004, 16:41
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
  Mit Zitat antworten Zitat