php - 使用 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
解决方案
介于两者之间的正则表达式可能有点困难。我建议使用量词\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 游乐场在这里。
推荐阅读
- android - 强制 chrome on android 在原生 android facebook 应用程序中打开 facebook 个人资料
- ios - Facebook Page Manager iOs 的通用链接
- linux - 区分退出和会话超时
- rust - 调用 tokio::spawn 时如何解决“特征绑定 `[closure]: tokio::prelude::Future` 不满足”?
- python - JSON格式并重新运行一行?
- python - Django 表单仅在表单有效时才保存相关对象
- javascript - 我想把它存储在redis中
- ios - 如何为连接节点获取正确的 AVAudioFormat
- oracle - 没有在 plsql 中发送邮件 html 正文
- django - 对实例 ID 的命令执行不成功