/*---------------------------------------------------------------*/
|
/*
|
Titre : Classe multi utilisation sur les chaines de caractères
|
|
URL : https://phpsources.net/code_s.php?id=498
|
Auteur : bemale
|
Date édition : 17 Mars 2009
|
Date mise a jour : 25 Fev 2026
|
|
Rapport de la maj:
|
- refactoring du code en PHP 7
|
- amélioration du code
|
- maintenance du code
|
- fonctionnement du code vérifié
|
- refactoring du code en PHP 8
|
- fonctionnement du code vérifié en PHP 8
|
- modification de la description
|
*/
|
/*---------------------------------------------------------------*/
|
|
class StringClass
|
{
|
private string $chaine;
|
|
/*
|
* Constructor
|
*/
|
public function __construct(string $chaine = '')
|
{
|
$this->chaine = $chaine;
|
}
|
|
/*
|
* Fonctions diverses et avariées
|
*/
|
public function extraire_chaine_entre(string $chaine_deb, string $chaine_fin
|
): StringClass
|
{
|
$debut = strpos($this->chaine, $chaine_deb);
|
$fin = strrpos($this->chaine, $chaine_fin);
|
if ($debut !== false && $fin !== false) {
|
$extr = substr($this->chaine, $debut + strlen($chaine_deb), $fin - (
|
$debut + strlen($chaine_deb)));
|
return new StringClass($extr);
|
}
|
return new StringClass('');
|
}
|
|
/*
|
* Mise en minuscule
|
*/
|
public function toLowerCase(): StringClass
|
{
|
return new StringClass(strtolower($this->chaine));
|
}
|
|
/*
|
* Mise en majuscule
|
*/
|
public function toUpperCase(): StringClass
|
{
|
return new StringClass(strtoupper($this->chaine));
|
}
|
|
/*
|
* Première lettre de la chaîne en majuscule
|
*/
|
public function ucfirst(): StringClass {
|
return new StringClass(ucfirst($this->chaine));
|
}
|
|
/*
|
* Première lettre de chaque mot de la chaîne en majuscule
|
*/
|
public function ucwords(): StringClass {
|
return new StringClass(ucwords($this->chaine));
|
}
|
|
/*
|
* Concaténer la chaine de l'instance avec une autre chaine
|
*/
|
public function concat($variable): StringClass
|
{
|
if ($variable instanceof StringClass) {
|
return new StringClass($this->chaine . $variable->get_chaine());
|
} elseif (is_string($variable)) {
|
return new StringClass($this->chaine . $variable);
|
}
|
return new StringClass($this->chaine);
|
}
|
|
/*
|
* Longueur de la chaîne
|
*/
|
public function length(): int
|
{
|
return strlen($this->chaine);
|
}
|
|
/*
|
* Vérifie si les deux chaines sont identiques
|
*/
|
public function equals($variable): bool
|
{
|
if ($variable instanceof StringClass) {
|
return $this->chaine === $variable->get_chaine();
|
} elseif (is_string($variable)) {
|
return $this->chaine === $variable;
|
}
|
return false;
|
}
|
|
/*
|
* Renvoie le caractère de la position donnée
|
*/
|
public function charAt(int $pos): string|false
|
{
|
if ($pos >= 0 && $pos < $this->length()) {
|
return $this->chaine[$pos];
|
}
|
return false;
|
}
|
|
/*
|
* Extrait une sous-chaîne de caractères
|
*/
|
public function substring(int $deb, int $fin): StringClass|false
|
{
|
if ($deb >= 0 && $fin <= $this->length() && $deb < $fin) {
|
return new StringClass(substr($this->chaine, $deb, $fin - $deb));
|
}
|
return false;
|
}
|
|
/*
|
* Retourne la position de la chaîne passée en paramètre
|
*/
|
public function indexOf(string $chaine): int
|
{
|
return strpos($this->chaine, $chaine) !== false ? strpos($this->chaine,
|
$chaine) : -1;
|
}
|
|
/*
|
* Retourne la dernière position de la chaîne passée en paramètre
|
*/
|
public function lastIndexOf(string $chaine): int
|
{
|
return strrpos($this->chaine, $chaine) !== false ? strrpos($this->chaine
|
, $chaine) : -1;
|
}
|
|
/*
|
* Suppression d'une sous-chaîne
|
*/
|
public function supprime(string|StringClass $substr): StringClass
|
{
|
if ($substr instanceof StringClass) {
|
$substr = $substr->get_chaine();
|
}
|
return new StringClass(str_replace($substr, '', $this->chaine));
|
}
|
|
/*
|
* Remplace un motif par un autre
|
*/
|
public function remplace(string|StringClass $chaine_remplace, string|
|
StringClass $chaine_remplacante): StringClass
|
{
|
if ($chaine_remplace instanceof StringClass) {
|
$chaine_remplace = $chaine_remplace->get_chaine();
|
}
|
if ($chaine_remplacante instanceof StringClass) {
|
$chaine_remplacante = $chaine_remplacante->get_chaine();
|
}
|
return new StringClass(str_ireplace($chaine_remplace,
|
$chaine_remplacante, $this->chaine));
|
}
|
|
/*
|
* Getteur
|
*/
|
public function get_chaine(): string
|
{
|
return $this->chaine;
|
}
|
|
/*
|
* Renvoi la chaine sous forme de tableau
|
*/
|
public function get_tab(): array
|
{
|
return str_split($this->chaine);
|
}
|
}
|
|
| ?> |