Autor Zpráva
jefitto44
Profil
Mám adresu stránky ktorá vyzerá napr.
www.daco.sk/obchod/epos,quartz,casio/panske,damske/titan,ocel,plast/50-450

Ako môžem detekovať, či sa v tomto reťazci nachádza 50-450, teda číslo pomlčka číslo?
Môže to byť na hociktorom mieste, nemusí byť na konci... Potrebujem to použiť do podmienky
Joker
Profil
jefitto44:
Konkrétně řetězec „50-450“ přes strpos.
Jestli se v tom nachází číslo pomlčka a číslo přes preg_match a regulární výraz třeba \d\-\d
jefitto44
Profil
Skúšam to s preg_match ale vždy vyhadzuje false... neviem ako mám nastaviť ten regulérny výraz a v manuali sa ot om tiež nič nepíše... :(
bestik_63
Profil
Co zkusit ten řetězec rozložit funkcí explode a pak v každým prvku pole hledat (50-450) nebo jestli ty hodnoty můžou být jakékoliv, tak číslo-číslo.
jefitto44
Profil
Všetko čo potrebujem, je regulerny vyraz, ktory by mi to našiel... pretože o tom neviem nič viac nájsť


Takže všetko čo som potreboval bolo toto

/[0-9]{0,3}[\-]{1}[0-9]{0,3}/

Ale aj tak Ďakujem za pomoc
Joker
Profil
jefitto44:
No to není správně, regulární výraz v [#5] je vlastně jen ukecaný test na pomlčku (projde tím cokoliv co obsahuje pomlčku, včetně řetězce "-").

Skúšam to s preg_match ale vždy vyhadzuje false.
Tak asi něco děláte špatně, mně ten regulár z [#2] funguje.
lionel messi
Profil
jefitto44:
Keď už tak:
/[0-9]{1,3}[\-]{1}[0-9]{1,3}/
ale je to dlhšie než mravčiarov jazyk.

Skráť to na:
preg_match("~\\d{1,3}\-\\d{1,3}~", $text, $nahrada);
Joker
Profil
lionel messi:
To alespoň bude fungovat, ale proč to tak psát?
[\-]{1} je podle mě jen upovídaný způsob napsání \-.
A to omezení počtu, pokud nás zajímá jen projde-neprojde, tam nemá žádný smysl. Naopak je to zavádějící, protože by se na pohled mohlo zdát, že tím regulárem neprojde třeba 12345-12345, což ve skutečnosti není pravda.
Ve skutečnosti tím projde cokoliv, co obsahuje číslici, pomlčku a číslici, takže je to jen ukecaný ekvivalent toho mého.
Karel N.
Profil *
[#8] Joker tak, nehledejte složitosti, tam kde nejsou
$url = "www.daco.sk/obchod/epos,quartz,casio/panske,damske/titan,ocel,plast/50-450";
if(preg_match("/\d+-\d+/", $url)) {
    echo "Obsahuje číslo-pomlčka-číslo";
}
viz online klikátko

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