Les chaînes en PHP

Les bases:

Guillemets ou Cotes :

<?php
$var="Hello PHP";
$machaine="le contenu de \$var est $var<br>";
echo $machaine;
//ou avec des '  ':
$mystring='le contenu de $var est '.$var;
echo $mystring;

dont le résultat sera toujours :

le contenu de $var est Hello PHP

La concaténation :

A l’aide de .

La longueur d’une chaine :

<?php int lg=strlen($chaine); ?>

Accéder au caractère i d’une chaine :

<?php echo $chaine[i]; ?>

La chaine est traitée comme un tableau indéxé par un *entier*
La plupart des tableaux de PHP sont indéxés par des chaines...

Mettre en majuscules/minuscules:

  • avec strtoupper() pour obtenir des majuscules

  • avec strtolower() pour mettre en minuscules

  • avec ucfirst() pour mettre en majuscule la première lettre d’une chaine

  • avec ucwords() pour mettre en majuscule la première lettre de chaque mot dans une chaine

Recherche de sous-chaines ou de motifs dans une chaine :

  • avec strstr()

  • avec stristr()

  • avec ereg() ou eregi()

  • str_contains() en PHP 8

Par exemple:

<?php
$AGENT=$_SERVER['HTTP_USER_AGENT'];
echo $AGENT;
echo("\n<P>");
if (stristr($AGENT,"MSIE"))
   echo "Vous semblez utiliser Internet Explorer !</b>";
   elseif (ereg("Firefox",$AGENT))
          echo "Vous semblez utiliser Firefox !</b>";
   elseif (eregi("chrome",$AGENT))
          echo "Vous semblez utiliser Chrome !</b>";

Indication

Les variantes de ces fonctions comportant un i indiquent une insensibilité à la casse c’est à dire que les majuscules et minuscules sont considérées comme identiques.

Exemple: Test un peu plus complet du UserAgent :

<?php
function getBrowser($userAgent){
  if (preg_match("/MSIE(.{5})/i",$userAgent,$num))
    return $num[0];
  elseif (preg_match("/Firefox(.*)/i",$userAgent,$num))
    return $num[0];
  elseif (preg_match("/chrome(.{4})/i",$userAgent,$num))
    return $num[0];
  elseif (preg_match("/safari/i",$userAgent,$num)){
    preg_match("/Version(.{4})/",$userAgent,$num);
    return "Safari ".$num[0];
}
  else return "Navigateur Inconnu";
}
if (!empty($_SERVER['HTTP_USER_AGENT'])){
echo "Votre navigateur semble etre:\n";
echo getBrowser($_SERVER['HTTP_USER_AGENT']);
}

// Test avec des UserAgent connus:
$FF="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:32.0) Gecko/20100101 Firefox/32.0";
$msie="Mozilla/5.0 (compatible; MSIE 10.6; Windows NT 6.1; Trident/5.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727) 3gpp-gba UNTRUSTED/1.0";
$chrome="Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36";
$safari="Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25";

echo "<br/> Test Firefox:<br/>\n";
echo getBrowser($FF)."<br/>\n";
echo "<br/> Test MSIE: \n";
echo getBrowser($msie)."<br/>\n";
echo "<br/> Test Chrome: \n";
echo getBrowser($chrome)."<br/>\n";
echo "<br/> Test Safari: \n";
echo getBrowser($safari);

Résultat:

<br/> Test Firefox:<br/>
Firefox/32.0<br/>
<br/> Test MSIE: 
MSIE 10.6<br/>
<br/> Test Chrome: 
Chrome/37.<br/>
<br/> Test Safari: 
Safari Version/6.0

fonctions complémentaires sur les strings apparues en PHP 8

<?php
// fonctions complémentaires sur les strings apparues en PHP 8
// str_contains
echo 'str_contains'.PHP_EOL;
echo str_contains('PHP 8 est très rapide', 'est')?'Vrai'.PHP_EOL:'Faux'.PHP_EOL; // Vrai
echo str_contains('PHP 8 est très rapide', 'Est')?'Vrai'.PHP_EOL:'Faux'.PHP_EOL; // Faux, sensible à la casse !
echo str_contains('PHP 8 est très rapide', 'tres')?'Vrai'.PHP_EOL:'Faux'.PHP_EOL;  // Faux, accentuation
// str_starts_with
echo 'str_starts_with'.PHP_EOL;
echo str_starts_with('PHP 8 est très rapide', 'PHP')?'Vrai'.PHP_EOL:'Faux'.PHP_EOL; // Vrai
echo 'str_ends_with'.PHP_EOL;
echo str_ends_with('PHP 8 est très rapide', 'est')?'Vrai'.PHP_EOL:'Faux'.PHP_EOL; // Faux

Résultat

str_contains
Vrai
Faux
Faux
str_starts_with
Vrai
str_ends_with
Faux

Librairie plus complète de Strings

Symfony offre un Composant de gestion des Strings plus complet (internationalisation, API Objet) que l’on peut installer avec composer :

composer require symfony/string

Dont la documentation est ici :

String Component