Почему регулярное выражение /£?.*£?/ не соответствует строке «£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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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