Autor Zpráva
Prochy
Profil
Zdravím,

potřeboval bych dát dohromady regulární výraz, který mi v následujících případech daný text odstraní (tam kde jsou čísla):

+420xxxx,
00420xxx
420xxxxx

První jsem si říkal, že bych to udělal jednoduše pomocí str_replace, ale tam podle mě není zaručený, že to nahradí pouze na začátku řetězce. Tohle bych dal dohromady pro 3 regulární výrazy, ale věřím, že to je možné hodit všechno do jednoho výrazu a s tím si tedy nevím rady.

Děkuji
tiso
Profil
/^((?:\+|00)?420).+/
Prochy
Profil
tiso:
Super funguje výborně, mohu se zeptat, co znamená operátor "?:"? Vím, že otázník většinou znamená 0-1x ale v této souvislosti to v tom moc nevidím nebo tedy vidím to, 0-1x tam může být 00 nebo 420, ale ta dvojtečka mi tam vrtá hlavou. Počítám, že | znamená OR.

Děkuji
juriad
Profil
(?:regular) znamená nepojmenovanou skupinu.
Joker
Profil
Kdyby vysvětlení z [#4] juriad bylo nejasné: U regulárních výrazů jdou zachytávat i jednotlivé podvýrazy v závorkách a pak na ně odkazovat (příklad: /(.+) \1/ znamená text následovaný mezerou a tím stejným textem, třeba "ahoj ahoj"). Závorka opatřená modifikátorem ?: nevytvoří ten zpětný odkaz.

Výraz /^((\+|00)?420).+/ by fungoval stejně jako /^((?:\+|00)?420).+/, akorát to první vytvoří odkaz \1 pro obsah velké závorky a \2 pro obsah malé závorky, zatímco to druhé vytvoří jen \1 pro velkou závorku. Protože se s těmi odkazy pojí určitá režie, tak jak to napsal tiso se to bude zpracovávat rychleji. I když u takhle jednoduchého výrazu asi rozdíl nebude poznat.

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:

0