- saxus blogja
- A hozzászóláshoz be kell jelentkezni
- 1448 megtekintés
Hozzászólások
Én a minap jöttem rá, hogy az empty() sem az, amire gondol az ember.
if(empty(trim($some_string)) do_something();
Ez parse error. Az empty() nem egy függvény, hanem egy nyelvi elem, ami egy változót vár (szóval az
empty('');
is parse error).
Az empty() ugyanis kb ezzel egyenlő:
!(isset($var) && (bool)$var)
- A hozzászóláshoz be kell jelentkezni
Igen, ennek az az értelme, hogy ha rendes függvény lenne, akkor mielőtt egyáltalán megnézné, mit csinál, kiértékelné a kifejezést, ami E_NOTICE-t adna, ha a változó nem létezik.
A trim-él nem lehet hiba, úgyhogy legegyszerűbb a
trim(...)==''
.
- A hozzászóláshoz be kell jelentkezni
De ez félrevezető.
$a = '0';
var_dump(empty($a), empty($b));
Ez két TRUE lesz, pedig az $a az egy karakter hosszú sztring, de a boolean konverzió miatt FALSE lesz belőle.
Nem intiutív. Ilyen esetben érdemes inkább isset()-et használni (ha nem vagyunk bizosak benne, hogy az adott valami létezik). Vagy rendesen exception-t dobna...
- A hozzászóláshoz be kell jelentkezni
Valóban, itt alapvetően a
(bool)"0"===false
a félrevezető (bár az empty()-t is megcsinálhatták volna úgy, hogy "0"-ra true-t adjon), ez talán onnan jön, hogy azt akarták, hogy
(bool)"0"
ne különbözzön
(bool)(int)"0"
-tól. Szóval az empty() nem jó string ellenőrzésre. (Mondjuk nem nagyon tudom elképzelni, hogy mikor kellene azt ellenőrizni, hogy egy változó vagy nem létezik, vagy üres-e, olyan kódban, ahol elkerüljük az E_NOTICE-okat, tehát nem használjuk ki, hogy
(bool)(nemlétező tömbelem)===false
.)
- A hozzászóláshoz be kell jelentkezni
+1 a trim() -re. Egyértelmű mindenhol.
----------------
Lvl86 Troll
- A hozzászóláshoz be kell jelentkezni
Hülye kérdés, de str_replace() -vel nem tudod megoldani?
Bár ez csúnya workaround lenne...pláne ha ez a string szerepel az object -ben máshol is...:)
"-Pedig vegetariánus vagyok; csak növényevő állatokat fogyasztok!"
azenoldalamponthu
- A hozzászóláshoz be kell jelentkezni
inkább akkor base64_encode()/base64_decode()
- A hozzászóláshoz be kell jelentkezni
Jogos.
"-Pedig vegetariánus vagyok; csak növényevő állatokat fogyasztok!"
azenoldalamponthu
- A hozzászóláshoz be kell jelentkezni
jah, hogy php kodolas az ilyenekbol all :p
--
When in doubt, use brute force.
- A hozzászóláshoz be kell jelentkezni
Ezért fizetnek :(
- A hozzászóláshoz be kell jelentkezni
ahova a php való, ezek beleférnek
- A hozzászóláshoz be kell jelentkezni
-1. Nem fér bele. Szvsz.
--
Egyébként php.net-eseknek az az érvük, hogy sehol nem ígérték azt, hogy az binary safe lesz, használjak valami encodingot rá.. Csak azt nem értem, hogy miért kellett pont \0-t belekeverni, mikor semmi egyébhez nem használ nem ascii karaktert...
----------------
Lvl86 Troll
- A hozzászóláshoz be kell jelentkezni
És miért kell raw post datából vadászni + jelre?
- A hozzászóláshoz be kell jelentkezni
hogyne ferne bele, oda, ahova a php valo ;-)
- A hozzászóláshoz be kell jelentkezni
És ha netán keresnél az adatbázisban, akkor a kereső sztringet base64encode-olod?
- A hozzászóláshoz be kell jelentkezni
Nyílván, ha kereshető dolgot akarok, akkor eleve fel sem merül, hogy szerializálva tárolom el. Szerializált adatban csak a LIKE operátorral lehet keresni, ami _nagyon_ lassú.
- A hozzászóláshoz be kell jelentkezni
Igen. Nagyon. De a valós életben mégis gyakran használják. A fulltext search valamiért nem annyira közismert. (Lehetséges magyarázat, hogy InnoDB esetében nincs rá lehetőség, a sphinx meg nem mindenhol adott.)
- A hozzászóláshoz be kell jelentkezni
lucene? vagy van ezer masik...
- A hozzászóláshoz be kell jelentkezni
Na most itt az alapvető probléma, hogy mi a retkes fenét keres egy \0 egy string kellős közepén? A probléma gondolom abból adódik, hogy a PHP eltárolja az adott string hosszát, csakhogy utána a PQescapeString() egy const char * -t kér, ami viszont keményen megáll a \0 -nál.
Nevetséges.
----------------
Lvl86 Troll
- A hozzászóláshoz be kell jelentkezni
Mondjuk ez valóban röhelyes...
"-Pedig vegetariánus vagyok; csak növényevő állatokat fogyasztok!"
azenoldalamponthu
- A hozzászóláshoz be kell jelentkezni
erosen fixme, de mintha a pg tudna blobokat is tarolni.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni