Autor Zpráva
pizzi
Profil *
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
"\v" je escape sekvence pro vertikální tabelator

použij test::add('php\view'); a nemusíš escape sekvence řešit
pizzi
Profil *
Děkuji, ale nelze to nějak udělat, abych mohl používat i s dvojité uvozovky?
Majkl578
Profil
Lze, stačí escapovat zpětné lomítko zpětným lomítkem: test::add("php\\view");
snake.aas
Profil
test::add("php\\view");
pizzi
Profil *
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
jo addslashes - http://www.php.net/manual/en/function.addslashes.php
Majkl578
Profil
pizzi:
Existuje něco takového?
Ne, pokud vstup špatně escapuješ, bude se i špatně interpretovat.

snake.aas:
Neplácej nesmysly.
snake.aas
Profil
Majkl578:
pouč mě proč je to nesmysl... čekám...

edit: jo už... dlouhý den.. sry
pizzi
Profil *
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
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
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.

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:

0