Autor Zpráva
aDAm
Profil
Poradil by někdo jak napsat reguál kde bude prostřední část volitelná?
Tvar může být:

string://nejaka/dlouha/cesta/soubor.ext

string://soubor.ext

zatím to mám takto:
preg_match("/\b(?P<storage>[a-zA-Z]+)\:\/\/(?<namespace>[a-zA-Z\/-]+)\/(?<filename>[a-zA-Z-]+).(?P<extension>[a-zA-Z]{3}+)/i", $string, $matches);

no a tímto mi projde pouze první tvar. Ten druhý by pak měl vrátit na pozici "namespace" null hodnotu.
1Pupik1989
Profil
Musíš to obalit do nezachytávané skupiny. null sice nevrátí, ale vrátí prázdný řetězec.

"~
  \b
    (?P<storage>[a-z]+)
      ://
    (?:                           #Zde je nezachytávaná skupina,
      (?P<namespace>[a-z/-]+)     #která se může vyskytnout
        /                         #0-1 krát
    )?                              
    (?P<filename>[a-z-]+)
      \\.
    (?P<extension>[a-z]{3}+)
~ix"
aDAm
Profil
1Pupik1989:
perfektní funguje, díky. Šel jsem na to podobně jen jsem tedy to obalení blbě uzavřel ;)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: