Почему регулярное выражение /£?.*£?/ не соответствует строке «£45,56–34,90» в PHP 8.2? [дубликат]Php

Кемеровские программисты php общаются здесь
Anonymous
Почему регулярное выражение /£?.*£?/ не соответствует строке «£45,56–34,90» в PHP 8.2? [дубликат]

Сообщение Anonymous »

Я использую PHP 8.2.11 на Mac Sonoma 14.5.
Мой код:

Код: Выделить всё

$cost = '£45.56–34.90';
$matches = array();
$found = preg_match(
'/£?.*£?/',
$cost,
$matches
);
Я ожидаю, что preg_match() вернет 1, указывая на совпадение, и заполнит $matches следующим образом:

Код: Выделить всё

array (
0 => '£45.56–34.90',
)
Однако $found === 0 и $matches пусты.
Я тестировал это на https: //regex101.com, что соответствует моим ожиданиям.
Если я изменю свой код так, что $cost === '45,56–34,90 фунтов стерлингов' (со вторым добавлен знак фунта), затем $found === 1 и $matches заполняется как:

Код: Выделить всё

array (
0 => '£45.56–£34.90',
)
Если я изменю свой код так, что $cost === '45,56–34,90 фунтов стерлингов' и шаблон будет выглядеть так: '/£?.*£?/g', затем $found === false.

Подробнее здесь: https://stackoverflow.com/questions/787 ... in-php-8-2

Вернуться в «Php»