2010-07-29 3 views
1

ok j'ai une chaîne

'Hello^<php>World&*124>< 
i ju*st press enteR' 

comment puis-je retourner à (une fonction est mieux?)

'Hello World123 
i just press enter' 

permettent

  • numéros
  • texte
  • espaces , nouvelle ligne, etc

Comment faire avec une regex? Dois-je utiliser regex? Y a-t-il un autre moyen?

Merci

Adam Ramadhan

+1

Vous ne serez pas en mesure de trouver une simple regex qui supprimera l'espace dans "H ello" mais pas n'importe quel autre espace ... –

+2

'H ello' sera un énorme problème. – Incognito

+0

ups hahaha désolé j'ai oublié cette partie. : | –

Répondre

2

Vous pouvez le faire:

function removeBad($str) 
{ 
    return preg_replace("/[^a-zA-Z0-9_ (\n|\r\n)]+/", "", $str); 
} 

Cela supprimera tout autre que l'alphabet, les chiffres, l'espace et retour à la ligne

Si vous souhaitez également supprimer des balises telles que <php> dans votre texte, vous pouvez faire:

function removeBad($str) 
{ 
    $str = strip_tags($str); 
    return preg_replace("/[^a-zA-Z0-9_ (\n|\r\n)]+/", "", $str); 
} 

Utilisation:

$str = removeBad('Hello^<php>World&*124><'); 
echo $str; 

Résultat:

HelloWorld124 

.

$str = removeBad('i ju*st press EnteR'); 
echo $str; 

Résultat:

i just press EnteR 
+1

super, que diriez-vous de tout limiter (y compris les caractères spéciaux)? '/.{$ min, $ max} /' ou existe-t-il un meilleur moyen? –

+0

@Adam Ramadhan: Pourriez-vous nous expliquer un peu plus ce que vous voulez dire exactement? – Sarfraz

+0

limitant comme 'wadwd', Heres mon débutant essayer espère qu'il aider fonction 'setMax (entrée $, $ min, max $) \t { \t \t $ text = « /^.{'.$min '., '. $ max.« } $ /"; \t if (preg_match (texte $, entrée $)) \t { \t de return true; \t} \t autre \t { \t return false; \t} \t} ' –

0

substitution Regex peut le faire pour vous. Je pense que vous en avez besoin de deux. Le premier à tout enlever entre les caractères < et>. Le second pour supprimer tout caractère qui n'est pas dans votre jeu de caractères autorisé. C'est le moyen le plus sûr de le faire.

Questions connexes