2010-05-20 6 views
2

Je suis en train de construire une couche de cache pour Redis DB à mon application et je suis arrivé au point où il est sur le point de prendre soin des tableaux.Vérifiez si la chaîne est sérialisée en PHP

Je me demande s'il y a une bonne façon (de haute performance!) De contrôler une chaîne à sérialiser ou non avec PHP?

Merci beaucoup!

+0

Que voulez-vous dire? une piscine interne de chaîne? PHP n'a pas ça (encore) – Artefacto

+0

Je ne peux pas vraiment dire ce que vous cherchez à partir du libellé de votre question. Le titre donnait l'impression que vous vouliez juste un moyen de vérifier si une chaîne donnée est une représentation sérialisée de quelque chose? –

Répondre

12
$array = @unserialize($string); 
if ($array === false && $string !== 'b:0;') { 
    // woops, that didn't appear to be anything serialized 
} 

Les $string !== 'b:0;' vérifie si la chaîne sérialisée peut avoir été la valeur false. Si cette vérification est importante pour vous, vous pouvez vouloir trim la chaîne sérialisée ou la pré-traiter autrement pour s'assurer que cela fonctionne.

+0

vous ne devez pas prendre le risque, vous pouvez vérifier error_get_last – Artefacto

+2

@Artefacto Cela peut être ou ne pas être utile, car il peut être difficile de dire si la dernière erreur a vraiment été lancée ici ou plus tôt. Une meilleure façon peut être de regarder la chaîne sérialisée pour voir si elle ressemble à un seul 'false 'sérialisé. De toute façon, qui sérialise les valeurs 'false'? ;) – deceze

+0

Salut Deceze! Ça a l'air génial, je vais certainement essayer ça! Passe un bon weekend! – Industrial

Questions connexes