Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用preg_Replace替换第一个匹配项_Php_Regex_Preg Replace - Fatal编程技术网

Php 使用preg_Replace替换第一个匹配项

Php 使用preg_Replace替换第一个匹配项,php,regex,preg-replace,Php,Regex,Preg Replace,我需要从产品描述中提取首次出现的GB属性。 使用我的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 CURV

我需要从产品描述中提取首次出现的GB属性。 使用我的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双SIM 5.5”IPS HD CURVO四核8GB RAM 1GB 4G LTE”

我预计:8


使用regex返回介于1和1之间的值可能有点困难。我建议使用quantifer
\d+
指定要专门查找的数字字符,并使用
preg\u 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);

如果您使用更新后的答案,它将根据您的需要返回8。使匹配成为非贪婪的
^.*?$from([^$from]+)$to.*$
的可能重复项您认为
[^$from]+
匹配的是什么?