Autor | Zpráva | ||
---|---|---|---|
Aznoh2 Profil * |
#1 · Zasláno: 18. 1. 2009, 20:29:12
Zdravim,
nevite prosim, proc funkce (vyrazy uzavreny do apostrofu) ereg_replace('(.*)([0-9].{1,1})([0-9]{2,2})(.*)', '\2\3','Verze 9.27, OS'); vraci 9.27 ale funkce (vyrazy uzavreny do uvozovek) ereg_replace("(.*)([0-9].{1,1})([0-9]{2,2})(.*)", "\2\3","Verze 9.27, OS"); vraci (dva divne znaky, jakoby znak negace) Narazil jsem na to na hostingu na brb.cz (profitux), ale divne se mi to chova i na localhostu a absolutne to nechapu... Nejdriv jsem myslel, ze to dela kodovani (mel jsem win-1250 a porovnavany string jsem bral ze servrove promenne), ale UTF-8 se chova stejne... Dekuji |
||
SwimX Profil |
#2 · Zasláno: 18. 1. 2009, 21:36:37
Aznoh2
"\2\3" co to je? escape sekvence 2? pokud to chceš nahradit za 23 tak tam nepiš lomítka. |
||
Měsíček Profil |
#3 · Zasláno: 18. 1. 2009, 21:43:25 · Upravil/a: Měsíček
Dělá to přesně to co jsi naprogramoval -> přepiše to na \2 a \3 jenže tohle jsou "neviditelné znaky". Takže se ti zobrazí tímto grafickým znázorněním. Schválně vyzkoušej tohle:
<?php echo "\2"; ?> <?php echo "\3"; ?> Jestliže to chceš nahradit jen číslem tak si to nekomplikuj a zpětná lomítka dej pryč. <?php echo "Ahoj".chr(3)."jak se máš?"; // Tajné echo "Ahoj".chr(10)."jak se máš?"; // (10) značí mezeru ?> |
||
nightfish Profil |
#4 · Zasláno: 18. 1. 2009, 22:26:14
Aznoh2
odkaz na matchovanou část je \1, \2 apod. avšak zpětné lomítko v řetězcích uzavřených do uvozovek je považováno za základ escape-sekvence, tzn. je nutné toto lomítko escapovat - výsledkem je použití \\1 a \\2 v případě, že bude řetězec uzavřen do apostrofů, hledání escape sekvencí v řetězci se neprovede a bude to fungovat tak, jak má... |
||
bohyn Profil |
#5 · Zasláno: 19. 1. 2009, 10:51:22
Aznoh2
mimochodem bych doporucil PCRE verzi regularu a trochu zjednodusit preg_replace("/.*([0-9]\.[0-9]{2}).*/", "\\1","Verze 9.27, OS"); |
||
Aznoh2 Profil * |
#6 · Zasláno: 20. 1. 2009, 12:32:19
Ted uz je mi to jasne... Omlouvam seO:-) Vsem moc diky za rady:-)
|
||
Časová prodleva: 15 let
|
0