Php 使用preg_Replace替换第一个匹配项
我需要从产品描述中提取首次出现的GB属性。 使用我的regex preg_rex函数,它将替换最后一个匹配,但我需要替换第一个匹配(仅第一个) 这用于从CSV文件导入产品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
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]+
匹配的是什么?