Autor Zpráva
maarlin
Profil
Zdravím,
mám následující kód:
$string = " ";
echo "\$string = ".$string."<br />\n";
$string = html_entity_decode ($string, ENT_QUOTES, "utf-8");
echo "\$string = ".$string."<br />\n"; // Zde vypisuje tvrdou mezeru (převedené &nbsp;) - OK
$string = trim ($string);
echo "\$string = ".$string."<br />\n"; // Zde vypisuje stále tvrdou mezeru...

Pomozte mi prosím někdo pochopit, proč se tak děje a proč prostě mezera po otrimování nezmizí... Díky
Yur4Y
Profil
Ten druhý parameter funkcie trim nie je kódovanie znakov. http://www.php.net/function.trim
maarlin
Profil
[#2] Jo, to mě pak taky došlo, když jsem díval do manuálu, ovšem stejně se to chová i bez toho parametru... :(
maarlin
Profil
Tak jsem to nakonec vyřešil
trim ($string, "&nbsp;");
, ale evidentně fce html_entity_decode nevrací skutečně tvrdou přeloženou mezeru " ".
Totiž následující podmínka je vyhodnocena jako nepravdivá:
if ($string == " ") {
echo "String is empty";
}
maarlin
Profil
To co jsem psal
Tak jsem to nakonec vyřešil
 
trim ($string, "&nbsp;");

je samozřejmě blbost... druhý parametr je string a bere jako ořezávací každý znak toho řetězce, čili "ořezávací" řetězec není &nsbp;, ale jsou to ampersand, n, b, s, p a středník (každý zvlášť).
spigl
Profil *
Viz poznámku v manuálu u html_entity_decode: Mezera po otrimování nezmizí, protože tvrdá mezera &nbsp; má ASCII kód 160, ale trim() ořezává znak s ASCII kódem 32.

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: