FAQ PHPConsultez toutes les FAQ

Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 29 juillet 2013 

 
OuvrirSommaireTypesChaînes de caractères

La fonction addslashes() ajoute des antislashes surnuméraires dans une chaîne. Par exemple : transforme "'" en "\'".
Exemple :

 
Sélectionnez
$texte = "L'utilisation de addslashes";
echo addslashes($texte); //Affiche L\'utilisation de addslashes

La fonction stripslashes() supprime les antislashes surnuméraires. Par exemple : transforme "\\" en "\".
Exemple :

 
Sélectionnez
echo stripslashes($_POST['texte']);
Mis à jour le 6 août 2008  par Cyberzoide, Kerod

Pour cela il suffit d'utiliser la fonction highlight_file($file) ou son alias show_source($file) qui affiche à l'écran le contenu du fichier $fichier en ayant colorisé le code source PHP.

On peut faire de même avec une chaîne de caractères via highlight_string($str [, $test]) qui affiche la chaîne $str colorisée, et retourne true ou false si le traitement s'est ou non bien passé. Si l'argument optionnel $test est à true, alors la chaîne colorisée n'est pas affichée à l'écran mais retournée.

Le fichier de configuration php.ini définit les couleurs de colorisation comme suit :

 
Sélectionnez

highlight.string = #DD0000
highlight.comment = #FF8000
highlight.keyword = #007700
highlight.bg = #FFFFFF
highlight.default = #0000BB
highlight.html = #000000
Mis à jour le 6 août 2008  par Cyberzoide

Pour compléter une chaîne de caractères jusqu'à une taille précise, il faut utiliser la fonction str_pad() qui retourne une chaîne complétée à droite, à gauche ou dans les deux sens, avec la chaîne passée en paramètre jusqu'à ce qu'elle atteigne une taille donnée.

Syntaxe :

 
Sélectionnez
string str_pad(string chaine, int longueur, string chaine_a_inserer, int type_ajout)

type_ajout correspond au type suivant :

  • STR_PAD_RIGHT : uniquement à droite
  • STR_PAD_LEFT : uniquement à gauche
  • STR_PAD_BOTH : à gauche et à droite

Exemple :

 
Sélectionnez
$chaine = "TEST";
echo str_pad($chaine, 10); //Affiche TEST avec que des espaces à la fin
echo str_pad($chaine, 10 , "++"); //Affiche TEST++++++
echo str_pad($chaine, 10 , "++",STR_PAD_LEFT); //Affiche ++++++TEST
echo str_pad($chaine, 10 , "++",STR_PAD_RIGHT); //Affiche TEST++++++
echo str_pad($chaine, 10 , "++",STR_PAD_BOTH); //Affiche +++TEST+++
Mis à jour le 6 août 2008  par Forum PHP, Kerod

L'opérateur point ( . ) (équivalent du + du Java) permet de concaténer deux chaînes de caractères. Au besoin, PHP procède au cast implicite des variables non chaînes de caractères.

Syntaxe :

 
Sélectionnez
$chaine = $chaine . $str;
$chaine .= $str;

Ces deux syntaxes sont équivalentes.

Exemples :

 
Sélectionnez
echo "Bonjour ".$nom;
$str .= $toto;
$adresse = $num.$rue.$cp.$ville;
Mis à jour le 6 août 2008  par Cyberzoide

Les fonctions intval(), floatval() (ou doubleval) permettent de convertir, respectivement, une chaîne en un nombre entier et à virgule flottante.
Exemple d'utilisation :

 
Sélectionnez
$chaine = '5';
echo $nombre = intval($chaine) + 2;
echo '<br />';
echo $nombre = (int) $chaine + 2; 
echo '<br /><br />';

$chaine = '5.532';
echo $nombre = floatval($chaine) + 2;
echo '<br />';
echo $nombre = (float) $chaine + 2;
echo '<br /><br />';

Rappel : Les variables PHP ont un type dynamique. Et donc on peut se passer de ces fonctions pour effectuer des calculs. Mais l'utilisation de ces fonctions, pour effectuer un cast, peut s'avérer utile.

Mis à jour le 6 août 2008  par Forum PHP

Dans certains cas, on souhaite limiter le nombre de caractères d'une chaîne trop longue, en la coupant.
Pour ce faire, on peut utiliser le code suivant :

Couper une chaîne de caractères et ajouter des ... à la fin
Sélectionnez

//$str est la chaîne de caractères et $nb le nombre de caractères maximum à afficher.
function tronque($str, $nb = 150) 
{
    // Si le nombre de caractères présents dans la chaine est supérieur au nombre 
    // maximum, alors on découpe la chaine au nombre de caractères 
    if (strlen($str) > $nb) 
    {
        $str = substr($str, 0, $nb);
        $position_espace = strrpos($str, " "); //on récupère l'emplacement du dernier espace dans la chaine, pour ne pas découper un mot.
        $texte = substr($str, 0, $position_espace);  //on redécoupe à la fin du dernier mot
        $str = $str."..."; //puis on rajoute des ...
    }
    return $str; //on retourne la variable modifiée
}
Créé le 7 janvier 2007  par Forum PHP

La fonction strip_tags() est ici d'une grande utilité. Elle supprime toute balise PHP ou (X)HTML. Elle peut prendre un deuxième paramètre, qui indique alors les balises qui sont autorisées.

 
Sélectionnez
$chaine = "<p>Voici une <br/> chaîne <b>de test</b> <!-- et un commentaire --></p>;
echo strip_tags($chaine); // Voici une chaîne de test
echo strip_tags($chaine, '<br/>'); // Voici une <br/> chaîne de test
Mis à jour le 8 mars 2011  par dourouc05

La fonction substr($str, $debut, $taille) retourne une sous-chaîne de la chaîne d'origine $str par recopie de $taille caractères à partir de la position $debut+1.

Exemple :

 
Sélectionnez
<?php
echo substr("Bonjour!", 3, 4); // affiche 'jour'
?>
Mis à jour le 6 août 2008  par Cyberzoide

À cet effet, la fonction wordwrap() peut être d'un grand secours sans devoir utiliser d'expression régulière. Cette fonction retourne la chaîne initiale avec, intercalée après un certain nombre de caractères, une autre chaîne. Par défaut, elle n'insérera pas de chaîne en plein milieu d'un mot, à moins que cela soit explicitement demandé.

 
Sélectionnez
$string = 'Les chaussettes de l\'archi-duchesse, sont-elles sèches ou archi-sèches ?';
echo wordwrap($string, 2, '<br/>'); // Les<br/>chaussettes<br/>de<br/>l'archi-duchesse,<br/>sont-elles<br/>sèches<br/>ou<br/>archi-sèches<br/>?
echo wordwrap($string, 2, '<br/>', true); // Le<br/>s<br/>ch<br/>au<br/>ss<br/>et<...
Mis à jour le 8 mars 2011  par dourouc05

Lien : Comment insérer une chaîne de caractères dans une autre tous les x caractères à l'aide d'une expression régulière ?

La fonction explode($delim, $str) permet de scinder la chaîne $str en une multitude de sous-chaînes qui composeront le tableau retourné par la fonction. Les sous-chaînes sont délimitées par le séparateur $delim dans la chaîne $str.

Exemple :

 
Sélectionnez
<?
$str = "451;2001;45;987;51";
$tab = explode(";",$str);
print_r($tab);
?>

Ainsi le tableau $tab contient 5 éléments.

Mis à jour le 6 août 2008  par Cyberzoide

Il faut se servir de la fonction nl2br() comme suit :

 
Sélectionnez
$chaineAvecBR = nl2br($chaineSansBR);

Difficile de faire plus simple.

Mis à jour le 6 août 2008  par Eric Berger

Il existe plusieurs méthodes pour réaliser cette opération, mais la plus courante est l'utlisation de la fonction str_replace() qui remplace/enlève toutes les occurrences toutes les occurrences d'une chaîne dans la chaîne voulue.

Exemples :

Remplacement d'une chaîne
Sélectionnez
$var = "Ici c'est la FAQ HTML";  //Chaîne initiale
$toreplace = 'HTML';  //Chaîne à remplacer
$remplacement = 'PHP';  //Chaîne de remplacement
$var = str_replace($toreplace, $remplacement, $var); 
echo $var; //Affiche Ici c'est la FAQ PHP
Suppression d'un caractère
Sélectionnez
$var = 'Jean-Michel'; //Chaîne initiale
$var = str_replace('-', '', $var);  //Supprime tous les - 
Mis à jour le 6 août 2008  par Forum PHP, Kerod

Lien : Comment enlever un caractère/ensemble de caractères d'une chaîne ?

Pour savoir si une chaîne en contient une autre, on utilise la fonction strpos() qui retourne la position numérique de la première occurrence de la chaîne de caractères.
Exemple d'utilisation :

 
Sélectionnez
$str1 = "abcdef";
$str2 = "cde";
//Affiche 2, donc $str2 est dans $str1.
if(strpos($str1, $str2) !== FALSE)
{
    echo $str1 . ' contient ' . $str2; 
}

$str1 = "abcdef";
$str2 = "CDE";
//Affiche rien car strpos est sensible à la casse.
if(strpos($str1, $str2) !== FALSE)
{
    echo $str1 . ' contient ' . $str2;  
}
Mis à jour le 6 août 2008  par Forum PHP
  • ltrim($str) : retourne la chaîne $str sans ses espaces de début
  • rtrim($str) : retourne la chaîne $str sans ses espaces de fin
  • trim($str) : retourne la chaîne $str sans ses espaces de début et de fin
Sont considérés comme espaces les caractères invisibles suivants :
  • " " (ASCII 32 (0x20)), un espace ordinaire
  • " " (ASCII 9 (0x09)), une tabulation
  • "\n" (ASCII 10 (0x0A)), une nouvelle ligne (line feed)
  • "\r" (ASCII 13 (0x0D)), un retour chariot (carriage return)
  • "\0" (ASCII 0 (0x00)), le caractère NUL
  • "\x0B" (ASCII 11 (0x0B)), une tabulation verticale.

Un second argument optionnel permet d'imposer la liste des caractères à supprimer. Exemple qui supprime toutes les voyelles :

 
Sélectionnez
echo trim("Bonjour!","B!r"); // affiche "onjou"

À noter que cette plage de caractères peut être un intervalle défini avec ".."

 
Sélectionnez
echo trim("Bonjour!","A..Za..z"); // affiche "!"
Mis à jour le 6 août 2008  par Cyberzoide, Forum PHP

Les expressions régulières permettent facilement ce genre de traitement via les parenthèses capturantes.

 
Sélectionnez
function surligne($str,$query) {
    return eregi_replace("($query)","<b style=\"background-color:yellow;\">\\1</b>",$str);
}

Cette fonction surligne (et met en gras) la sous-chaîne $query de la chaîne $str.

Ici on remplace toute sous-chaîne de $str vérifiant le motif défini par $query par une autre chaîne comportant la mise en forme et la sous-chaîne trouvée.

Mis à jour le 6 août 2008  par Cyberzoide
  • strtoupper() convertit une chaîne en majuscules
  • strtolower() convertit une chaîne en minuscules
  • ucfirst() convertit le premier caractère d'une chaîne en majuscule
  • ucwords() convertit le premier caractère de chaque mot d'une chaîne en majuscule
 
Sélectionnez
$str = "Bonjour à tous !";
echo strtoupper($str); // affiche "BONJOUR A TOUS !"
echo strtolower($str); // affiche "bonjour à tous !"
echo ucwords($str); // affiche "Bonjour A Tous!" 

Attention, les caractères accentués ne sont pas toujours passés en majuscules, car cela dépend de la configuration locale du serveur.

Mis à jour le 6 août 2008  par Cyberzoide

Vous avez écrit ce qui suit et l'affichage n'est pas celui attendu

 
Sélectionnez

$variable = 'valeur' ;
echo 'chaine $variable'; // affiche : chaine $variable

Vous attendiez chaine valeur. L'explication est très simple : les variables ne sont pas interprétées dans les chaines entre simple quotes.
Vous avez donc trois solutions :
1) La concaténation

 
Sélectionnez

$variable = 'valeur' ;
echo 'chaine ' . $variable; // affiche : chaine valeur

2) Utiliser des doubles quotes (guillemets).
Les variables sont interprétées dans les chaînes entre double quotes, mais ce n'est pas recommandé d'un point de vue performances. Si l'on utilise quand même des variables dans des chaînes entre double quotes, les entrées de tableaux doivent être entourés d'accolades et il n'est pas possible d'utiliser les membres d'objets ($obj->machin).

 
Sélectionnez

$variable = 'valeur' ;
echo "chaine $variable" ; // affiche : chaine valeur

$tableau['cle'] = 'valeur2';
echo "test {$tableau['cle']}" ; // affiche : test valeur2

3) La troisième solution est l'utilisation de la syntaxe HereDoc

 
Sélectionnez

$variable = 'valeur' ;
echo <<<identifiant
chaine $variable
identifiant;
Créé le 10 décembre 2004  par Eusebius, Jérôme
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2003 Developpez.com Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.