Impossible de détecter une balise avec regex

Bonjour,
Je suis actuellement sur un projet de site d'informatique et je dois donc créer une fonction qui colore le code HTML.

Pour commencer en douceur, j'éxécute ce code :

<?php
	function colorHTML($message) {
		$message = htmlspecialchars($message);
		$message = preg_replace('#</?[a-z]+( [a-z]+(^["|\'][a-z]+["|\']$))*(?: /)?>#',
		"<span style='color:blue;'>$0 <span style='color:red;'>$1<span style='color:purple';>$2</span></span></span>", 
		$message);
		
		return $message;
	}
	
	if(isset($_POST['message'])) {
		$message = colorHTML($_POST['message']);
		
		echo $message;
	}
?>

	<form method='post'>
		<input type='text' name='message' />
		<input type='submit' />
	</form>


Normalement, ce code devrait colorer <img src='image.png' alt='' />, mais non.

Pourquoi ? Quels sont mes erreurs ? Merci d'avance pour vos réponse

1 réponse

  1. Contributeur
    Hello,

    Je vois un espace dans ta regexp... si tu veux rechercher un espace, il faut mettre \s !

    Exemple : pour rechercher "salut toi".

    #salut\stoi#

    Mihawk
    "The Weapon of Choice"