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 :