请教下怎么按照要求替换这个字符串

PQianbei 2020-04-30 12:07:45
源字符串:
-- CPU --<br />Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz<br /><br />-- RAM --<br />Physical Memory 0: ChannelA-DIMM0 , Micron , 4096 MB , 00000000 , 2133 MHz<br />Physical Memory 1: ChannelB-DIMM0 , Micron , 4096 MB , 00000000 , 2133 MHz<br /><br />-- Video --<br />Intel(R) UHD Graphics 620<br />

替换后:
-- CPU --<br />Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz<br /><br />-- RAM --<br />4096 MB<br />4096 MB<br /><br />-- Video --<br />Intel(R) UHD Graphics 620<br />

请问大神们,这该怎么实现啊。求教。
字符串中的所有数字都是变量。
...全文
271 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
下雨的声音丶 2020-05-08
  • 打赏
  • 举报
回复

$str = <<<str
-- CPU --<br />Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz<br /><br />-- RAM --
<br />Physical Memory 0: ChannelA-
DIMM0 , Micron , 4096 MB , 00000000 , 2133 MHz<br />Physical Memory 1: ChannelB-
DIMM0 , Micron , 4096 MB , 00000000 , 2133 MHz<br /><br />-- Video --
<br />Intel(R) UHD Graphics 620<br />
str;

echo preg_replace ('/Physical Memory[\s\S]*?(\d+ MB)[\s\S]*?<br \/>/','$1<br />', $str);
结果 具体可以调整
于小九 2020-05-01
  • 打赏
  • 举报
回复
如果一定要严格按照替换后的样式的话可以参考下面这样,虽然写法比较繁琐但是能够满足你的需求:
<?php

//-- CPU --<br />Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz<br /><br />-- RAM --<br />Physical Memory 0: ChannelA-DIMM0 , Micron , 4096 MB , 00000000 , 2133 MHz<br />Physical Memory 1: ChannelB-DIMM0 , Micron , 4096 MB , 00000000 , 2133 MHz<br /><br />-- Video --<br />Intel(R) UHD Graphics 620<br />
//-- CPU --<br />Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz<br /><br />-- RAM --<br />4096 MB<br />4096 MB<br /><br />-- Video --<br />Intel(R) UHD Graphics 620<br />
/*
-- CPU --<br />
Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz<br /><br />
-- RAM --<br />
Physical Memory 0: ChannelA-DIMM0 , Micron , 4096 MB , 00000000 , 2133 MHz<br />
Physical Memory 1: ChannelB-DIMM0 , Micron , 4096 MB , 00000000 , 2133 MHz<br /><br />
-- Video --<br />
Intel(R) UHD Graphics 620<br />
*/

function mohu($arr, $str) {
foreach($arr as $k => $v)
if(strstr($v, $str) !== false) 
$result[] = $k;
return $result;
}


$str = '-- CPU --<br />Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz<br /><br />-- RAM --<br />Physical Memory 0: ChannelA-DIMM0 , Micron , 4096 MB , 00000000 , 2133 MHz<br />Physical Memory 1: ChannelB-DIMM0 , Micron , 4096 MB , 00000000 , 2133 MHz<br /><br />-- Video --<br />Intel(R) UHD Graphics 620<br />';
foreach(explode('<br /><br />', $str) as $k => $v1)
foreach($temp_arr = explode('<br />', $v1) as $v2) {
if(array_shift($temp_arr) == $v2 && end($temp_arr) != $v2 && empty(mohu([$v2], '-- CPU --')) ) $result[$k] .= '<br />';
if(strpos($v2, ',') !== false) {
$temp = explode(',', $v2);
$result[$k] .= trim($temp[mohu($temp, 'MB')[0]]);
} else {
$result[$k] .= $v2;
}
if(end($temp_arr) == $v2) $result[$k] .= '<br />';
}

print_r(implode('<br />', $result));

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧