Autor Zpráva
Aznoh2
Profil *
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
Aznoh2
"\2\3" co to je? escape sekvence 2? pokud to chceš nahradit za 23 tak tam nepiš lomítka.
Měsíček
Profil
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
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
Aznoh2
mimochodem bych doporucil PCRE verzi regularu a trochu zjednodusit
preg_replace("/.*([0-9]\.[0-9]{2}).*/", "\\1","Verze 9.27, OS");
Aznoh2
Profil *
Ted uz je mi to jasne... Omlouvam seO:-) Vsem moc diky za rady:-)

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: