Метод replaceMatches
Метод replaceMatches класса UnicodeString
выполняет поиск по регулярному выражению и заменяет
все найденные совпадения на заданную строку. Первым
параметром передаётся шаблон регулярного выражения,
вторым - строка замены. Метод возвращает новый объект
UnicodeString, а исходная строка остаётся неизменной.
Если совпадений нет, возвращается копия исходной строки без изменений.
Синтаксис
$res = $ustr->replaceMatches(string $pattern, string $replacement): UnicodeString
Пример
Давайте заменим все цифры в строке на символ '#':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\String\UnicodeString;
class ArticleController extends AbstractController
{
#[Route('/', name: 'article_index')]
public function index(): Response
{
$ustr = new UnicodeString('abc123de45');
$res = $ustr->replaceMatches('/\d+/', '#');
return new Response($res->toString());
}
}
?>
Результат выполнения кода:
abc#de#
Пример
Давайте заменим все последовательности пробельных символов на один пробел:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\String\UnicodeString;
class ArticleController extends AbstractController
{
#[Route('/', name: 'article_index')]
public function index(): Response
{
$ustr = new UnicodeString("hello user abcde");
$res = $ustr->replaceMatches('/\s+/', ' ');
return new Response($res->toString());
}
}
?>
Результат выполнения кода:
"hello user abcde"
Пример
Давайте удалим все небуквенные символы из строки, передав пустую строку в качестве замены:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\String\UnicodeString;
class ArticleController extends AbstractController
{
#[Route('/', name: 'article_index')]
public function index(): Response
{
$ustr = new UnicodeString('user-name_123');
$res = $ustr->replaceMatches('/[^a-z]+/i', '');
return new Response($res->toString());
}
}
?>
Результат выполнения кода:
"username"
Пример
Давайте используем обратные ссылки в строке замены, чтобы поменять местами части строки:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\String\UnicodeString;
class ArticleController extends AbstractController
{
#[Route('/', name: 'article_index')]
public function index(): Response
{
$ustr = new UnicodeString('article: user');
$res = $ustr->replaceMatches('/(\w+): (\w+)/', '$2 - $1');
return new Response($res->toString());
}
}
?>
Результат выполнения кода:
"user - article"
Смотрите также
-
метод
replace,
который заменяет подстроки без регулярных выражений -
метод
match,
который возвращает совпадения с регулярным выражением -
класс
UnicodeString,
который представляет Unicode-строку -
метод
split,
который разбивает строку по регулярному выражению