首页 > 解决方案 > 使用 preg_replace 替换第一个匹配项

问题描述

我需要从产品描述中提取第一次出现的千兆字节属性。使用我的正则表达式 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 8GB RAM 1GB 4G LTE”

我预计:8

它返回 1

标签: phpregexpreg-replace

解决方案


介于两者之间的正则表达式可能有点困难。我建议使用量词\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 游乐场在这里


推荐阅读