Supprimer un mot au début d'une chaîne de caractères avec PHP
Publié le 05/03/2022 • Actualisé le 05/03/2022
Dans ce bout de code, nous voyons comment supprimer un mot au début d'une chaîne de caractères avec PHP. Dans l'exemple suivant, on ne peut pas utiliser la fonction str_replace
car la chaîne strange:)
serait aussi supprimée. Avec PHP on peut utiliser la fonction preg_replace
, et avec Symfony, on peut utiliser l'élégante fonction trimPrefix()
introduite avec Symfony 5.4 / 6.0. C'est bien plus lisible, n'est-ce pas ? 🙂
<?php
declare(strict_types=1);
namespace App\Controller\Snippet;
use function Symfony\Component\String\u;
/**
* J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
* Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
* ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
* Les services sont injectés dans le constructeur du contrôleur principal.
*/
trait Snippet191Trait
{
public function snippet191(): void
{
$string = "strange: It is strange:) isn't it?";
$prefix = 'strange:';
// With PHP
$withPhp = preg_replace('/^'.preg_quote($prefix, '/').'/', '', $string);
// With Symfony
$withSymfony = u($string)->trimPrefix($prefix);
echo 'string: '.$string.PHP_EOL.PHP_EOL;
echo 'PHP: '.$withPhp.PHP_EOL;
echo 'Symfony: '.$withSymfony;
// That's it! 😁
}
}
Exécuter le snippet ≪ this.showUnitTest ? this.trans.hide_unit_test : this.trans.show_unit_test ≫ Plus sur Stackoverflow Lire la doc Plus sur le web
<?php
declare(strict_types=1);
namespace App\Tests\Integration\Controller\Snippets;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
use function Symfony\Component\String\u;
/**
* @see Snippet191Trait
*/
final class Snippet191Test extends KernelTestCase
{
/**
* @see Snippet191Trait::snippet191
*/
public function testSnippet191(): void
{
$string = "strange: It is strange:) isn't it?";
$prefix = 'strange:';
$withPhp = preg_replace('/^'.preg_quote($prefix, '/').'/', '', $string);
$withSymfony = u($string)->trimPrefix($prefix);
self::assertSame(" It is strange:) isn't it?", $withPhp);
self::assertSame($withPhp, $withSymfony->toString());
}
}