Autor | Zpráva | ||
---|---|---|---|
Igor Profil * |
#1 · Zasláno: 14. 11. 2010, 15:34:16
Dobrý den,
potřeboval bych upravit tento řetězec pro php 5.3 if (eregi($start, $aktualne) && eregi($konec, $aktualne)) když dám jen if (preg_match($start, $aktualne) && preg_match($konec, $aktualne)) tak to nefunguje a nemůžu nikde najít úpravu pro konkrétní případ. Nevíte někdo co s tim? Díky I. |
||
Hologos Profil |
#2 · Zasláno: 14. 11. 2010, 16:16:39 · Upravil/a: Hologos
Regulární výrazy, které se používají pro funkce ereg*, jsou jiné než regulární výrazy pro funkce preg*..
Z toho plyne, že pokud nepošleš regulární výrazy, které používáš, nikdo ti je nemůže pomoct předělat pro funkce preg*. |
||
AM_ Profil |
#3 · Zasláno: 14. 11. 2010, 16:52:19
obecně platí rozdíl, že v preg se musejí zavřít do delimiterů (delimiter-výraz-delimiter-modifikátory), přičemž delimiter může být skoro jakýkoli nealfanumerický znak, vhodné je volit takový, který se ve výrazu nevyskytuje a není ho tam potřeba esvapovat.
např. eregi('[a-z]', $neco); je ekvivalentní s preg_match('~[a-z]~i', $neco); kde ~ je delimiter a i case-insensitive modifikátor. Jak zmínil Hologos, jsou i drobné rozdíly ve fungování obou modelů a tedy některé výrazy je potřeba upravit, ale rozdíly jsou spíše v tom, že preg_* toho umí víc, u přechodu z ereg_ stačí většině výrazů přidat delimitery (a modifikátor i v případě eregi) |
||
Igor Profil * |
#4 · Zasláno: 14. 11. 2010, 18:38:19
AM:
Jo, tohle už jsem si dohledal a jeden řádek podobnym způsobem opravil, ale pro tenhle konkrétní případ jsem nenašel nic jak to správně "zkombinovat" :) Mám místo if (eregi($start, $aktualne) && eregi($konec, $aktualne)) dát if (preg_match('~[a-z]~i', $start, $aktualne) && preg_match('~[a-z]~i', $konec, $aktualne)) ?? To je přece hloupost. Nejsem programátor, jen se snažim dát dohromady script k webu který jsem kdysi koupil, teď ho přesunul na jiný hosting a u kterýho už nefunguje podpora. Hologos: Jak je poznám? U jinýho řádku jsem jen nahradil if (eregi("\[", $v) && eregi("\]", $v)) tímhle if (preg_match("/\[/i", $v) && preg_match("/\]/i", $v)) |
||
AM_ Profil |
#5 · Zasláno: 14. 11. 2010, 19:19:15
Igor:
„Mám místo...“ stačí trocha selského rozumu abys viděl jaká je to blbost :) možná raději: preg_match("~$konec~i", $start, $aktualne) „Jak je poznám?“ tohle by zrovna mělo být správně. Ale ukazuje to, že autor kódu zřejmě nebyl moc kvalitní programátor; celé se to dá zapsat jako if preg_match("~[][]~i", $v) |
||
Igor Profil * |
#6 · Zasláno: 14. 11. 2010, 21:08:16
AM:
Přesně tohle jsem chtěl vidět, díky moc :) Funguje to takhle: if (preg_match("~$start~i", $aktualne) && preg_match("~$konec~i", $aktualne)) P.S.: já to zkoušel třeba if (preg_match("~$start~i", "~$aktualne~i") && preg_match("~$konec~i", "~$aktualne~i")) a podobně :) Ještě jednou dík ;) |
||
Časová prodleva: 14 let
|
0