| Autor | Zpráva | ||
|---|---|---|---|
| stig09gy Profil * |
#1 · Zasláno: 6. 12. 2010, 21:31:34
Ahoj. Potřebuju čistě v php nějak porovnat 2 řetězce, kde shodné řetězce jsou i
"re*z?c" = "retezec" * nahrazuje libovolný počet znaků, ? jeden znak. Musí to fungovat stejně jako v mysql "`sloupec` LIKE 're%z_c'", ale neboť nepracuju s databází, nemohu to na ni delegovat. Jako první mě napadlo napsat regulární výraz, ale tam by mohlo docházet ke kolizi řetězců a také neznám předem počet zástupných znaků. Jak takové řetězce tedy porovnat? Pokud jsem hledal správně, tak php není přímo fce který by s tímto počítala. |
||
| motik Profil |
#2 · Zasláno: 6. 12. 2010, 22:10:31 · Upravil/a: motik
if (preg_match('/^re(.*)z(.)c$/', 'retezec', $out)) ... |
||
| stig09gy Profil * |
#3 · Zasláno: 6. 12. 2010, 22:19:23
stig09gy:
„by mohlo docházet ke kolizi řetězců a také neznám předem počet zástupných znaků.“ V tomto konkrétním případě to fungovat bude. Ale co pokud bude řetězec "*" nebo "**§3č\dad.*??(./^$" nebo podobná zrůdnost? Totiž jako první bych musel nějak vytvořit z řetězce řetězec pro preg_match a tam pokud budu vstupní řetězec backspacovat, tak mohu omylem backspacovat to co nechci apod. |
||
| motik Profil |
#4 · Zasláno: 6. 12. 2010, 22:30:06
nejsu si jistej, ale pokud nevíš, co jsou zástupný znaky a co znaky vyjadřující samy sebe, tak ti na to žádná funkce nepomůže - prostě to nějak určí, ale jistotu tam mít nemůžeš..
|
||
| stig09gy Profil * |
#5 · Zasláno: 6. 12. 2010, 22:34:52
Zástupné znaky: * ?
Hvězdička: ** Otazník: *? Všechny ostatní znaky jsou normální. |
||
| motik Profil |
#6 · Zasláno: 6. 12. 2010, 22:45:19
tak pokud je to tak, tak by mělo jít jen ty znaky ponahrazovat a je to, né?
$vyraz = str_replace("**", "\*", $vyraz); |
||
| stig09gy Profil * |
#7 · Zasláno: 6. 12. 2010, 22:48:04
Tady nejde ani o mé speciální znaky ale o speciální znaky fce preg_match. Těch bude hodně a bude těžké je správně všechny odescapovat.
|
||
| motik Profil |
#8 · Zasláno: 6. 12. 2010, 22:50:01
rád bych ti pomohl víc, ale když se ti do toho nechce, tak proč bych ti to měl dělat já? :-P
|
||
| Kcko Profil |
#9 · Zasláno: 6. 12. 2010, 22:53:24
Těch bude hodně a bude těžké je správně všechny odescapovat.
preg_quote |
||
| motik Profil |
#10 · Zasláno: 6. 12. 2010, 23:03:07
ale to ti nahradí všechny, né?
|
||
| stig09gy Profil * |
#11 · Zasláno: 6. 12. 2010, 23:16:40
Na preg_quote jsem úplně zapomněl. Díky moc, ten řetězec skrz to proženu, pak najdu escapované * a ? a vyrobím z toho časti reg.výrazu a potom to celé zabalím do reg. výrazu.
|
||
|
Časová prodleva: 16 let
|
|||
0