Autor | Zpráva | ||
---|---|---|---|
pizzi Profil * |
#1 · Zasláno: 15. 12. 2011, 18:37:56
Dobrý den, mám takový zajímavý problém. Mám kód:
class test { private $test; public static function add($test2) { $this->test[] = $test2; } } Pokud zavolám funkci test::add("php\model");, tak mi php vrátí "php\model". Pokud ale zavolám funkci test::add("php\view");, tak php vrátí "phpiew". |
||
Mike8748 Profil |
#2 · Zasláno: 15. 12. 2011, 18:54:40
"\v" je escape sekvence pro vertikální tabelator
použij test::add('php\view'); a nemusíš escape sekvence řešit
|
||
pizzi Profil * |
#3 · Zasláno: 15. 12. 2011, 18:59:37
Děkuji, ale nelze to nějak udělat, abych mohl používat i s dvojité uvozovky?
|
||
Majkl578 Profil |
#4 · Zasláno: 15. 12. 2011, 19:04:47
Lze, stačí escapovat zpětné lomítko zpětným lomítkem:
test::add("php\\view");
|
||
snake.aas Profil |
#5 · Zasláno: 15. 12. 2011, 19:05:01
test::add("php\\view");
|
||
pizzi Profil * |
#6 · Zasláno: 15. 12. 2011, 19:10:40
Já myslel, že bych třeba $test2 prohnal nějakou funkcí, abych nemusel dělat zrovna takovéhle věci. Existuje něco takového?
|
||
snake.aas Profil |
#7 · Zasláno: 15. 12. 2011, 19:14:23
jo addslashes - http://www.php.net/manual/en/function.addslashes.php
|
||
Majkl578 Profil |
#8 · Zasláno: 15. 12. 2011, 19:20:04
pizzi:
„Existuje něco takového?“ Ne, pokud vstup špatně escapuješ, bude se i špatně interpretovat. snake.aas: Neplácej nesmysly. |
||
snake.aas Profil |
#9 · Zasláno: 15. 12. 2011, 19:21:58 · Upravil/a: snake.aas
Majkl578:
pouč mě proč je to nesmysl... čekám... edit: jo už... dlouhý den.. sry |
||
pizzi Profil * |
#10 · Zasláno: 17. 12. 2011, 13:21:12
A nebylo by možné při zadání test::add("php\view"); přidat na začátek metody add
str_replace('\\', '\\\\', $test2); ?
|
||
Majkl578 Profil |
#11 · Zasláno: 17. 12. 2011, 16:04:04 · Upravil/a: Majkl578
Ne, nebylo. Nesouvisí to s obsahem řetězce. Tenhle problém je totiž už ve chvíli, kdy se ten řetězec vytváří (a ještě v paměti neexistuje). Jediné, což by pravděpodobně šlo, je
str_replace('\v', '\\v', $string) . Je to ale velmi špatné řešení.
↓ Jistěže, opraveno. |
||
DJ Miky Profil |
#12 · Zasláno: 17. 12. 2011, 16:25:59 · Upravil/a: DJ Miky
Majkl578:
„str_replace('\v', '\\', $string)“ Fungovalo by str_replace("\v", '\\v', $string) , ale opravdu to není dobré řešení.
pizzi: Co třeba použít klasické lomítko místo zpětného? S ním tyhle problémy nebudou. Pokud potřebuješ interně zpětné lomítko, můžeš ho na začátku funkce nahradit, což sice taky není ideální řešení, ale je trochu lepší než to výše. |
||
Časová prodleva: 12 let
|
0