80 votes

Comment supprimer les espaces dans les variables de PHP ?

Je le sais commentaire PHP.net. J'aimerais disposer d'un outil similaire à tr pour PHP de manière à ce que je puisse exécuter simplement

tr -d " " ""

J'ai exécuté sans succès la fonction php_strip_whitespace par

$tags_trimmed = php_strip_whitespace($tags);

J'exécute la fonction regex sans succès.

$tags_trimmed = preg_replace(" ", "", $tags);

1 votes

@taztodgmail Regardez les dates. Celle-ci date de 2009 et l'autre de 2013. La version de 2013 est une copie de celle-ci.

1 votes

Pour information : le \s n'inclut pas les caractères utf-8 tels que nbsp ;, ps, quads et fs encodés en utf-8 stackoverflow.com/questions/2227921/

133voto

Paul Dixon Points 122033

Dépouiller cualquier les espaces blancs, vous pouvez utiliser une expression régulière

$str=preg_replace('/\s+/', '', $str);

Voir aussi cette réponse pour quelque chose qui puisse gérer les espaces blancs dans les chaînes UTF-8.

0 votes

Toute autre solution. Ceci (preg_replace) échoue pour moi.

0 votes

Kathir, avec quel apport échoue-t-il ?

0 votes

Pourquoi les gens continuent-ils à mettre le + après la s ? Vous n'en avez pas besoin pour cela.

26voto

trante Points 3811

Il est parfois nécessaire de supprimer des espaces blancs consécutifs. Vous pouvez le faire comme suit :

$str = "My   name    is";
$str = preg_replace('/\s\s+/', ' ', $str);

Sortie :

My name is

0 votes

Merci. Exactement ce que je cherchais

16voto

Tyler Carter Points 30030
$string = str_replace(" ", "", $string);

Je pense que preg_replace rechercherait quelque chose comme [:space:]

6voto

camomileCase Points 884

Si vous voulez supprimer tous les espaces blancs de $tags, pourquoi ne pas le faire ?

str_replace(' ', '', $tags);

Si vous souhaitez retirer de nouvelles lignes et autres, cela nécessitera un peu plus...

2 votes

Si vous n'assignez pas le résultat à une variable, cela ne ferait rien d'utile.

2voto

micropro.cz Points 85

Une option possible est d'utiliser un wrapper de fichier personnalisé pour simuler les variables en tant que fichiers. Vous pouvez y parvenir en utilisant ceci :

1) Tout d'abord, enregistrez votre wrapper (une seule fois dans le fichier, utilisez-le comme session_start()) :

stream_wrapper_register('var', VarWrapper);

2) Définissez ensuite votre classe enveloppante (c'est écrit très rapidement, ce n'est pas tout à fait correct, mais cela fonctionne) :

class VarWrapper {
  protected $pos = 0;
  protected $content;
  public function stream_open($path, $mode, $options, &$opened_path) {
    $varname = substr($path, 6);
    global $$varname;
    $this->content = $$varname;
    return true;
  }
  public function stream_read($count) {
    $s = substr($this->content, $this->pos, $count);
    $this->pos += $count;
    return $s;
  }
  public function stream_stat() {
    $f = fopen(__file__, 'rb');
    $a = fstat($f);
    fclose($f);
    if (isset($a[7])) $a[7] = strlen($this->content);
    return $a;
  }
}

3) Utilisez ensuite n'importe quelle fonction de fichier avec votre wrapper sur le protocole var:// (vous pouvez aussi l'utiliser pour include, require etc.) :

global $__myVar;
$__myVar = 'Enter tags here';
$data = php_strip_whitespace('var://__myVar');

Note : N'oubliez pas de placer votre variable dans la portée globale (comme global $__myVar).

0 votes

Il s'agit d'un sujet complexe, les débutants pourraient ne pas vouloir s'y intéresser. Mais pour avoir fait un effort, je vais vous donner un upvote pour que le -1 de ce post soit supprimé.

1 votes

Oui, je sais que c'est très complexe, mais cela fonctionne et, dans certains cas, c'est très puissant. Et malheureusement c'est le seul moyen (au lieu de créer des fichiers tempfiles, ce qui est moche) d'envoyer des variables à des fonctions qui ne fonctionnent qu'avec des fichiers (et php_strip_whitespace n'est pas le seul). Par exemple, vous pouvez substituer du code avant require - vous pouvez créer votre propre "pré-compilateur" pour PHP où vous pouvez faire ce que vous voulez. Je l'utilise et il devient très puissant et utile au fil des années de programmation.

0 votes

global $$varname; Comme c'était horrible en 2013

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X