2009-11-18 6 views
0

J'écris en PHP!Entrée de chaîne de filtre PHP, couper tous les sauts de ligne, 1 caractères

Il y a une entrée de chaîne d'utilisateur, et je veux couper tous les retours à la ligne, 1 caractères qui sont plus de 1 dans une rangée (évitez <br /><br /> ...).

exemple:

I am a 




SPaMmEr! 

deviendrait:

I am a 
SPaMmEr! 

ou

I am a 
. 
. 
. 
. 
SPaMmEr! 

également

+0

ce qui fait 1 * caractères qui sont plus 1 d'affilée * signifie? –

+0

Pour échapper les balises HTML, vous pouvez les mettre en backticks. (') – Brandon

+0

vous signifie * lignes en double *? –

Répondre

2

Obtenir toutes les lignes se fait de cette façon (si vous voulez attraper dos, mac et ligne unix RSS):

$lines = explode("\n", str_replace(array("\r\n", "\r"), "\n", $string)); 

lignes de filtrage avec plus d'un caractère peut être fait avec preg_grep():

$lines = preg_grep('/^.{2}/', $lines); 

Ou en utilisant des expressions régulières pour la processus complet:

preg_match_all('/^.{2}.*$/', $string, $matches); 
$lines = $matches[0]; 

Ou si vous n'avez pas besoin d'un tableau contenant toutes les lignes restantes, vous pouvez supprimer les chaînes non désirées avec un seul appel:

$string = preg_replace('/^.?$\n/m', '', $string); 
+0

merci beaucoup, je vais l'utiliser! – Gal

0

Que diriez-vous ceci:

$str = str_replace(array("\n", "\r"), '', $str); 

Où $ str est votre entrée utilisateur.

EDIT:

Désolé, ce code va supprimer toutes les lignes quel que soit, pourrait encore être utile.

0

\ n est une entrée valide pour une nouvelle ligne, ainsi que \ r \ n et \ n \ r. Exécutez un Regex ou str_replace pour remplacer toutes les combinaisons de \ r et \ n avec \ n et vous pouvez utiliser use explode ("\ n", $ string), et vérifier tous les éléments du tableau pour un char ou vide. Vous pouvez supprimer ces éléments ou les remplacer par une seule occurrence du caractère répété, par ex. J'utilise une nouvelle ligne pour un nouveau paragraphe, donc il détruirait tel.

0

Pourquoi ne pas utiliser regexp pour cela:

## replace 1 or more new line symbols with single new line symbol 
$empty_lines_trimmed = preg_replace('"(\r?\n)+"', "\n", $empty_lines); 
Questions connexes