par
Topper » 07 avr. 2009, 13:41
Bonjour à tous,
Certaines personnes aiment bien que les règles typographiques soient respectées. L'un d'elle fait que les ponctuations doubles (?!:;) doivent avoir un espace entre la ponctuation et le caractère qui précède (dans l'idéal insécable). Elles doivent également avoir un espace après (dans l'idéal normal).
J'ai tenté de coder cela avec une expression régulière mais je me heurte à l'exclusion des chaînes qui comportent ces ponctuations et qui ne doivent pas être prises en compte comme les liens.
$chaine="Voici un texte avec des? qui sont parfois ??? avec un esssspace devant ou non; Il y a ausssssi des: ponctuations dans un lien http://www.free.fr?id=1 qu'il ne faut pas modifier. Il y a aussi! des points d'exclamation !";
echo $chaine."<br />";
// Remplace toutes les sequences de plusieurs ponctuations doubles par une seule
$chaine=ereg_replace("[!]{1,}","!", $chaine);
$chaine=ereg_replace("[?]{1,}","?",$chaine);
$chaine=ereg_replace("[:]{1,}",":",$chaine);
$chaine=ereg_replace("[;]{1,}",";",$chaine);
// Place un espace insecable avant les ponctuations doubles
$chaine=preg_replace('`([_a-zA-Z0-9]+)([[:space:]]?)(\?|\!|:|;)`','$1 $3',$chaine);
echo $chaine;
Si quelqu'un a une idée pour que la règle exclue les mots commençant par http::// et ftp://

Bonjour à tous,
Certaines personnes aiment bien que les règles typographiques soient respectées. L'un d'elle fait que les ponctuations doubles (?!:;) doivent avoir un espace entre la ponctuation et le caractère qui précède (dans l'idéal insécable). Elles doivent également avoir un espace après (dans l'idéal normal).
J'ai tenté de coder cela avec une expression régulière mais je me heurte à l'exclusion des chaînes qui comportent ces ponctuations et qui ne doivent pas être prises en compte comme les liens.
[php]
$chaine="Voici un texte avec des? qui sont parfois ??? avec un esssspace devant ou non; Il y a ausssssi des: ponctuations dans un lien http://www.free.fr?id=1 qu'il ne faut pas modifier. Il y a aussi! des points d'exclamation !";
echo $chaine."<br />";
// Remplace toutes les sequences de plusieurs ponctuations doubles par une seule
$chaine=ereg_replace("[!]{1,}","!", $chaine);
$chaine=ereg_replace("[?]{1,}","?",$chaine);
$chaine=ereg_replace("[:]{1,}",":",$chaine);
$chaine=ereg_replace("[;]{1,}",";",$chaine);
// Place un espace insecable avant les ponctuations doubles
$chaine=preg_replace('`([_a-zA-Z0-9]+)([[:space:]]?)(\?|\!|:|;)`','$1 $3',$chaine);
echo $chaine;
[/php]
Si quelqu'un a une idée pour que la règle exclue les mots commençant par http::// et ftp:// :(