PHP判断SSD子串是否属于指定截取字符串及获取其位置的实现方法
实现步骤与PHP代码
1. 前置字符串截取说明
我们首先对两行设备信息按逗号拆分,取第4个和第5个逗号之间的子串(对应拆分后数组索引为4的元素,索引从0开始计数),得到结果如下:
- 第一行设备截取子串:
500GB - 第二行设备截取子串:
120GB SSD
2. PHP功能实现代码
以下代码同时兼容PHP8及更低版本,可直接运行:
<?php // 原始设备信息字符串 $device1 = 'IRBIS MB2380 Monoblock, 23.8", Intel Celeron N3350, 4GB, 500GB, Intel HD Graphics 500, Windows 10 Home, black'; $device2 = 'IRU Office P2121 Monoblock, 21.5", Intel Celeron G4900, 4GB, 120GB SSD, Intel UHD Graphics 610, FreeDOS, black [1200026]'; // 封装截取目标子串的方法 function getStorageSubstr($deviceStr) { // 按逗号拆分后去除每个字段前后的空格 $splitParts = array_map('trim', explode(',', $deviceStr)); // 返回第4和第5个逗号之间的字段 return $splitParts[4] ?? ''; } $subStr1 = getStorageSubstr($device1); $subStr2 = getStorageSubstr($device2); $searchKey = 'SSD'; // 遍历处理两个子串,实现两项需求 foreach ([$subStr1, $subStr2] as $k => $sub) { $deviceNo = $k + 1; // 需求1:判断SSD是否存在,兼容低版本PHP写法 $hasSsd = strpos($sub, $searchKey) !== false; echo "设备{$deviceNo}截取子串:`{$sub}`\n"; echo "是否包含SSD:" . ($hasSsd ? '是' : '否') . "\n"; if ($hasSsd) { // 需求2:获取SSD的索引位置(索引从0开始计数) $position = strpos($sub, $searchKey); echo "SSD在子串中的索引位置:{$position}\n"; } echo "------------------------\n"; } ?>
3. 运行结果说明
- 设备1的子串
500GB不包含SSD,无对应位置输出 - 设备2的子串
120GB SSD包含SSD,对应索引位置为6,即子串从开头数第7个字符的位置
内容的提问来源于stack exchange,提问作者devsitesite
相关产品推荐
相关产品推荐

