J'ai des problèmes avec la suppression de caractères spéciaux. Je souhaite supprimer tous les caractères spéciaux à l'exception de "() /.% - &", car je définis cette chaîne comme titre.
J'ai édité le code de l'original (regardez ci-dessous):
preg_replace('/[^a-zA-Z0-9_ -%][().][\/]/s', '', $String);
Mais cela ne fonctionne pas pour supprimer des caractères spéciaux tels que: "", "", "", entre autres.
code d'origine: (cela fonctionne mais il supprime ces caractères: "() /.% - &")
preg_replace('/[^a-zA-Z0-9_ -]/s', '', $String);
Votre point correspond à tous les caractères. Échappez-lui (et les autres caractères spéciaux), comme ceci:
preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $String);
preg_replace('#[^\w()/.%\-&]#',"",$string);
Bon essai! Je pense qu'il suffit de faire quelques petits changements:
[
et ]
) à l'intérieur de la classe de caractères (qui sont également indiqués par [
et ]
)\
) lui-même-
est spécial: s'il est entre deux caractères, cela signifie une plage, mais si c'est au début ou à la fin, cela signifie le littéral -
personnage.Vous voudrez quelque chose comme ça:
preg_replace('/[^a-zA-Z0-9_%\[().\]\\/-]/s', '', $String);
Voir http://docs.activestate.com/activeperl/5.10/lib/pods/perlrecharclass.html#special_characters_inside_a_bracketed_character_class si vous souhaitez en savoir plus sur ce sujet.
Vous voulez remplacer str , car en termes de performances, c'est beaucoup moins cher et correspond toujours à vos besoins!
$title = str_replace( array( '\'', '"', ',' , ';', '<', '>' ), ' ', $rawtitle);
(À moins qu'il ne s'agisse de sécurité et d'injection SQL, dans ce cas, je préfère aller avec une liste POSITIVE de caractères AUTORISÉS ... encore mieux, respectez les routines testées et éprouvées.)
Btw, puisque l'OP a parlé de la définition du titre: je ne remplacerais pas les caractères spéciaux par rien, mais par un espace. Un espace superficieux est moins gênant que deux mots collés l'un à l'autre ...
<?php
$string = '`~!@#$%^&^&*()_+{}[]|\/;:"< >,.?-<h1>You .</h1><p> text</p>'."'";
$string=strip_tags($string,"");
$string = preg_replace('/[^A-Za-z0-9\s.\s-]/','',$string);
echo $string = str_replace( array( '-', '.' ), '', $string);
?>
mysqli_set_charset($con,"utf8");
$title = ' LEVEL – EXTENDED';
$newtitle = preg_replace('/[^(\x20-\x7F)]*/','', $title);
echo $newtitle;
Result : LEVEL EXTENDED
De nombreux caractères étranges peuvent être supprimés en appliquant ci-dessous le code de connexion mysql. mais dans certaines circonstances, si vous supprimez ce type de caractère étrange comme "vous pouvez utiliser le format preg_replace ci-dessus.
preg_replace('/[^a-zA-Z0-9_ \-()\/%-&]/s', '', $String);