Заменить первый матч, используя preg_replace - PullRequest
0 голосов
/ 05 февраля 2019

Мне нужно извлечь первое вхождение атрибута гигабайта из описания продукта.С помощью функции regex preg_rex он заменяет последнее совпадение, но мне нужно заменить первое совпадение (только первое).

Это для импорта товаров из файлов CSV.

function getStringBetween($str, $to, $from){

echo preg_replace("/^.*$from([^$from]+)$to.*$/", '$1', $str);

}

$str = 'NGM YOU COLOR P550 DUAL SIM 5.5" IPS HD CURVO QUAD CORE 8GB RAM 1GB 4G LTE';

getStringBetween($str, "GB", " ");

Из строки: «NGM YOU COLOR P550 DUAL SIM 5.5» IPS HD CURVO QUAD CORE 8 ГБ ОЗУ 1 ГБ 4 Г LTE »

Я ожидаю: 8

Возвращается 1

1 Ответ

0 голосов
/ 05 февраля 2019

В промежутке с регулярным выражением может быть немного сложно.Я рекомендую использовать квантификатор \d+, чтобы указать, что вы ищете именно символ цифры, и использовать preg_match, чтобы получить первый результат:

<?php
function getFirstGB($str){

    if (preg_match("/(\d+)GB/", $str, $matches)) {
        return $matches[1];
    } else {
        return false;
    }

}

$str = 'NGM YOU COLOR P550 DUAL SIM 5.5" IPS HD CURVO QUAD CORE 8GB RAM 1GB 4G LTE';

echo getFirstGB($str);

PHP Playground здесь .

...