Вывод десятичных чисел в php - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь извлечь два числа из переменной ($ text), а затем умножить их и вывести результаты.Два числа могут быть целыми числами и числами с плавающей запятой.

Когда я пытаюсь: $ text = "1 фотография - ч / б - 2 x 5 дюймов."
Я получаю: область изображения 10
что я хочу

<?php
$text = "1 photograph - b&w - 2 x 5.5 in.";


  if (preg_match("/[[:digit:]]*\ x [[:digit:]]* /",  $text, $match)) :
   print_r($match);

    $dimensions = trim($match[0]);
    $dimensions = explode(" x ",$dimensions);
    $image_area = (($dimensions[0]) * ($dimensions[1]));



    echo 'The image area is '.($image_area);


  endif;
 ?>

Но когда я пытаюсь: $ text = "1 фотография - ч / б - 2 x 5,5 дюйма".
Я получаю пустой экран

Как бы я вывелплавает?


мой код и вывод: http://sandbox.onlinephpfunctions.com/code/4b45219fdcb7864442268459621bb506c24ce78f

Ответы [ 3 ]

0 голосов
/ 23 января 2019

У вас есть дополнительное место в конце регулярного выражения, которое его нарушит.Удалите его, и оно будет соответствовать 2 x 5.Вы сможете расширить его, добавив \. к каждой стороне регулярного выражения:

if (preg_match("/[[:digit:]\.]*\ x [[:digit:]\.]*/",  $text, $match)) {
0 голосов
/ 23 января 2019

Ваше регулярное выражение не соответствует. Вы хотите:

/\d+(?:\.\d+)? x \d+(?:\.\d+)? /

1 или более цифр (необязательно: точка, 1 или более цифр), пробел, x, пробел, 1 или более цифр (необязательно: точка, 1 или более цифр), пробел

тест онлайн

0 голосов
/ 23 января 2019

Выражение регулярного выражения недостаточно устойчиво, чтобы различать целые и десятичные числа.Оператор [[:digit:]] соответствует только символам 0-9.

Этот сайт полезен для создания и тестирования регулярных выражений:

https://regex101.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...