| Autor | Zpráva | ||
|---|---|---|---|
| Balin.Tomas Profil * |
#1 · Zasláno: 15. 12. 2011, 15:33:59
Zravim všechny a prosím o pomoc.Pokud mám toto:
$html = preg_replace('/index\.php\?cat=([a-z0-9]+)/i','kategorie-$1'.$nazev_kategorie.'.html',$html);Funguje jak má jen bych potřeboval poradit, pokud ?cat=10001 a víc mohlo by toto fungovat nebo by to muselo být zadané jinak? $html = preg_replace('/index\.php\?cat=([a-z10001]+)/i','kategorie-$1'.$dalsi_nazev_kategorie.'.html',$html);Díky moc za pomoc |
||
| Ugo Profil |
#2 · Zasláno: 15. 12. 2011, 15:54:24
[a-z10001]+ je to samé jako [a-z10]+ , je to výpis povolených znaků s tím že některé umějí i posloupnost (a-z,0-9..) plus znamená, že se musí některý z těchto znaků vyskytnout alespoň jednou a vícekrát. Nepochopil jsem přesně otázku tka odpovídám obecně. cat=2, cat=10003 atp. na ten druhý regulár pasovat nebude, ale třeba cat=010pejsek01 ano.
|
||
| Balin.Tomas Profil * |
#3 · Zasláno: 15. 12. 2011, 16:08:30
Ugo:
Asi jsem to špatně napsal, jde mi o to že pokud hodnota cat= bude větší nebo rovna 10001 bude nahrazení jiné.To znamená při cat=6 se nahradí $nazev_kategorie a při cat=10006 se nahradí $dalsi_nazev_kategorie
Snad jsem to popsal lépe o co mi jde.Dík |
||
| Ugo Profil |
#4 · Zasláno: 15. 12. 2011, 16:32:10
To takhle fungovat nebude, seš v podobnym problému jako jsem byl já při routování :) tady ti ale bude stačit sestavit dotaz kam nebude pasovat to když je číslo menší a dát ho jako první. Přesný regulár mě nenapadá ale ([a-z]*[0-9]{5,}[a-z]*) by mohlo fungovat. Případně si to můžeš projet tim prvnim, poté vzít další kterej ti vytáhne čísla a čislo porovnat s hodnotou, to by chtělo pár proměnejch a řádků navíc.
|
||
| Balin.Tomas Profil * |
#5 · Zasláno: 15. 12. 2011, 16:50:04
Já si to myslel že tak jednoduchý to nebude :-) ten $nazev_kategorie je dotaz do databáze, tak to bude jednodušší asi podmínkou.Tak děkuji.
|
||
| Kcko Profil |
#6 · Zasláno: 15. 12. 2011, 17:42:03
Balin.Tomas:
Použijte obecný regulár a funkci preg_replace_callback a poté rozhodněte jak si to naIFujete
|
||
| Majkl578 Profil |
#7 · Zasláno: 15. 12. 2011, 18:02:46
[#6] Kcko:
On i samotný regulár (tedy dva) bez použití callbacku by nevypadaly až tak složitě: $data = 'lorem ipsum index.php?cat=1009 dolor sit index.php?cat=272727 amet';
$nazevKategorie = 'foo';
$dalsiNazevKategorie = 'bar';
// nahrazení 1-10000
$data = preg_replace('~
index\.php\?cat=(
[1-9]\d{0,3} # 1-9999
| 10000 # 10000
)(?!\d)
~ix', 'kategorie-$1' . $nazevKategorie . '.html', $data);
// nahrazení 10001-nekonečno
$data = preg_replace('~
index\.php\?cat=(
1000[1-9] # 10001-10009
| 100[1-9]\d # 10010-10099
| 10[1-9]\d\d # 10100-10999
| 1[1-9]\d\d\d # 11000-19999
| [1-9]\d\d\d\d # 20000-99999
| [1-9]\d{5,} # 100000-nekonečno
)(?!\d)
~ix', 'kategorie-$1' . $dalsiNazevKategorie . '.html', $data);
var_dump($data);
// lorem ipsum kategorie-1009foo.html dolor sit kategorie-272727bar.html amet |
||
| Kcko Profil |
#8 · Zasláno: 15. 12. 2011, 18:53:32
Majkl578:
To jistě ne, ale zde se to vyloženě nabízí. A rozhodně to bude čitelnější, než Vaše funkční ukázka. |
||
|
Časová prodleva: 14 let
|
|||
0