Eğer bir dize seri hale olup olmadığını görmek için kontrol edin?
Ya da bir dize getirilmeye çıktı / sonuç olup olmadığını belirlemek için en iyi yolu nedir() fonksiyonu?
CEVAP
Derdim, 14* *deneyin ;-)
Manuel alıntı :
Durumda geçirilen dize değil unserializeable, YANLIŞ ve döndürülür OLUŞACAKTIR verilir.
Bu yüzden, eğer dönüş değeri false
olup olmadığını kontrol etmelisiniz(===
veya emin olmak için !==
).
Sadece dikkat dikkat : @ operator kullanmak için isteyebilirsiniz.
Örneğin :
$str = 'hjkl';
$data = @unserialize($str);
if ($data !== false) {
echo "ok";
} else {
echo "not ok";
}
Al sen
not ok
EDİT : Oh, ve gibi @Peter dedi (sağolsun!), eğer bir boolean false temsili unserialize için çalışıyorsanız sorun olabilir :-(
Yani, tefrika dize "b:0;
" yararlı da olabilir ; bir şey bu hile yapmak gerekir gibi, sanırım : . için eşit olmadığını kontrol
$data = @unserialize($str);
if ($str === 'b:0;' || $data !== false) {
echo "ok";
} else {
echo "not ok";
}
unserialize denemeden önce bu özel durumda test genellikle yanlış sıralanmış bir değeri yok. eğer bir iyileştirme olabilir ama bu muhtemelen yararlı olacaktır.
Eğer bir nesne C seri hale getirilebil...
Eğer bir dize geçerli bir adres olup o...
Eğer bir dize geçerli bir sayı olup ol...
Eğer bir dize null olup olmadığını kon...
Eğer bir dize PHP JSON olup olmadığını...