Comment utiliser le compilateur PHP en ligne
- Écrivez ou collez un script PHP dans l'éditeur. La balise ouvrante
<?phpest facultative ; si votre code ne contient aucune balise PHP, elle est ajoutée pour vous. Les gabarits qui mélangent du HTML et des blocs<?php ... ?>fonctionnent aussi. Réinitialiser l'exemple restaure le code de départ. - Appuyez sur Exécuter ou utilisez Ctrl + Entrée (⌘ + Entrée sur Mac).
- Tout ce que votre script produit avec
echo,print,printfouvar_dumpapparaît dans le panneau Sortie. Les avertissements et les erreurs fatales sont mis en évidence. - Choisissez une limite de temps de 5, 15 ou 60 secondes. Les scripts qui durent plus longtemps sont arrêtés automatiquement, et Arrêter met fin à une exécution immédiatement.
La première exécution télécharge l'interpréteur PHP, environ 12 Mo. Votre navigateur le met en cache : les exécutions suivantes démarrent donc beaucoup plus vite. Utilisez Copier ou main.php pour conserver votre script.
PHP s'exécute localement dans votre navigateur : votre code n'est donc jamais envoyé ni stocké sur nos serveurs. L'éditeur mémorise votre dernier script dans le stockage local de votre navigateur, et nulle part ailleurs.
Ce qui est pris en charge
Le compilateur utilise PHP 8 via php-wasm, l'interpréteur PHP compilé en WebAssembly. Ce n'est pas une simulation : votre code est exécuté par PHP lui-même.
- Syntaxe de PHP 8 : propriétés typées, types union, expressions
match, arguments nommés, fonctions fléchées (fn), opérateur nullsafe (?->) et enums lorsque la version fournie les prend en charge. - Fonctions de base pour les chaînes (
str_contains,sprintf,explode), les tableaux (array_map,usort,array_filter), les mathématiques et les dates. - JSON avec
json_encodeetjson_decode. - Expressions régulières avec les fonctions
preg_*. - Classes, interfaces, traits, fermetures, générateurs et exceptions.
Limites :
- Pas d'extensions réseau :
curl, les sockets et les requêtes HTTP ne sont pas disponibles. - Pas de serveur de base de données : il n'y a ni MySQL ni PostgreSQL auxquels se connecter. Pour vous exercer au SQL, utilisez le compilateur SQL en ligne.
- Pas de contexte de serveur web :
$_GET,$_POST, les sessions et les cookies ne reçoivent pas de vraies données de requête, et la sortie HTML s'affiche sous forme de texte, sans rendu. - Pas de packages Composer, et pas d'entrée standard.
Aide-mémoire PHP
<?php
$prices = ['apple' => 1.20, 'bread' => 2.50, 'milk' => 0.99];
$expensive = array_filter($prices, fn($p) => $p > 1);
arsort($expensive);
foreach ($expensive as $item => $price) {
printf("%-6s %5.2f\n", $item, $price);
}
$label = match (true) {
count($prices) > 2 => 'big basket',
default => 'small basket',
};
echo $label, PHP_EOL;
echo json_encode($prices, JSON_PRETTY_PRINT), "\n";
| Tâche | Syntaxe |
|---|---|
| Variable | $name = "Ada"; |
| Interpolation de chaîne | "Hello, {$name}!" |
| Tableau associatif | $a = ['key' => 'value']; |
| Parcourir clés et valeurs | foreach ($a as $k => $v) { } |
| Inspecter une valeur | var_dump($x); ou print_r($x); |
| Fusion de null | $v = $a['x'] ?? 'default'; |
Conseils
- Terminez les lignes par
"\n"ouPHP_EOL;echon'ajoute pas de saut de ligne tout seul. - Utilisez
print_r($array)pour un aperçu compact des tableaux imbriqués, ouvar_dump()quand vous avez aussi besoin des types et des longueurs. - Pour un JSON lisible, passez
JSON_PRETTY_PRINT, ou collez la sortie dans le formateur et validateur JSON pour la valider. - Chaque exécution démarre un interpréteur neuf : les variables et fonctions de l'exécution précédente ne sont donc pas conservées.
preg_match ? Construisez-le et déboguez-le d'abord dans le testeur de regex, puis collez-le entre les délimiteurs, par exemple '/^\d+$/'.Foire aux questions
Dois-je commencer mon code par <?php ?
Non. Si le script ne contient aucune balise <?php, une balise est ajoutée automatiquement. Vous pouvez aussi écrire du HTML avec des blocs <?php ... ?> intégrés, exactement comme dans un fichier .php sur un serveur web.
Puis-je me connecter à MySQL ?
Non. L'interpréteur s'exécute dans votre navigateur, sans accès au réseau ni serveur de base de données. Pour vous entraîner au SQL, le compilateur SQL vous donne une vraie base SQLite dans le navigateur.
Pourquoi curl ou file_get_contents() avec une URL ne fonctionnent-ils pas ?
Les extensions réseau ne sont pas incluses dans cette version WebAssembly, et les navigateurs n'autorisent pas les connexions réseau brutes depuis un bac à sable comme celui-ci.
Est-ce équivalent à exécuter PHP sur un serveur ?
Pour les fonctionnalités du langage et les fonctions de chaînes, de tableaux et de JSON, oui : c'est le vrai moteur PHP. Tout ce qui dépend d'un serveur web, d'extensions ou du réseau se comporte différemment.
Mis à jour