21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
Apollo
Profil *
Ahoj,

měl bych prosbu, už se dva dny trápím s regulérním výrazem, který má vybrat vše kromě 9 čísel pohromadě. V textu se objevují i menší čísla, takže nelze použít [^0-9] protože to nevybere třeba číslo 4, já potřebuju vybrat vše kromě 985426985 devítimístného čísla. Děkuju za pomoct.
Keeehi
Profil
Použij inverzi. Vyber devítimístná čísla, ta odstraň a to co ti zbude je vše, co není devítimístné číslo.
$output = preg_replace('~\d{9}~', '', $input);
Tohle trochu předpokládá, že ve vstupu není více než devítimístné číslo. Pokud ano, bylo by to trochu složitější, princip ale zůstává stejný.
Apollo
Profil *
Děkuju, pomohlo! nevěděl jsem, že jde použít ~ pořád jsem to zkoušel přes ^.


Děkuju, pomohlo! nevěděl jsem, že jde použít ~ pořád jsem to zkoušel přes ^.
Tomášeek
Profil
Apollo:
nevěděl jsem, že jde použít ~ pořád jsem to zkoušel přes ^
~ neslouží k výběru dat, ale je to jen delimiter, který jsi tam taky nějaký mít musel. Princip řešení je nehledat pomocí preg_match, ale zahodit nežádoucí sekvenci znaků pomocí preg_replace.
Keeehi
Profil
Apollo:
Ano, ~ je obyčejný oddelovač a ten nemá žádný speciální význam. Velmi často se jako oddělovač používá /. Ovšem znak lomítka se v regulárním výrazu objevuje nečekaně často, pak se musí escapovat pomocí zpětného lomítka a vzniká lomitkový hell. Takže jsem si už před několika lety vybral tildu a používám tu jako oddělovač. Není v tom nic jiného než že lomítka nemusím pak escapovat a s tildou se nestkávám až tak často.

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