首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >preg_replace在数组中的每个子字符串前后添加一个'1‘

preg_replace在数组中的每个子字符串前后添加一个'1‘
EN

Stack Overflow用户
提问于 2013-10-24 16:19:25
回答 1查看 179关注 0票数 0

我有一个脚本,我运行在一组服务器上,使用openwsman从它们中提取硬件数据。这是为了跟踪非常开放的环境中的变化,并最终更新mysql数据库以保存库存记录。问题是,preg_replace在数组中每个值的开头和结尾都添加了‘1’s,这些步骤非常不寻常,所以我将解释每个步骤的作用,并在最后提供输出。

代码语言:javascript
复制
$memsize = shell_exec("wsman enumerate http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/root/dcim/DCIM_MemoryView -h $ipaddress -V -v -c dummy.cert -P 443 -u $user -p $pass -j utf-8 -y basic | grep 'Size'");
$memsize = trim($memsize); #Removes excess spaces at beginning and end of the output.
$memsize = str_replace('          ',',',$memsize); #Replaces spaces between values with a comma.
$memsize = explode(',',$memsize); #Converts the values pulled into an array with comma as the delimiter
$memsizepreg = preg_replace("/[^0-9]/","",$memsize); #Deletes all non-number characters.
$memsizesum = array_sum($memsizepreg); #Gets a sum of all the detected DIMMs.
echo $memsize[0];
echo "<br>";
echo $memsize[1];
echo "<br>";
echo $memsize[2];
echo "<br>";
echo $memsize[3];
echo "<br>";
echo var_dump($memsize);
echo "<br>";
echo $memsizepreg[0];
echo "<br>";
echo $memsizepreg[1];
echo "<br>";
echo $memsizepreg[2];
echo "<br>";
echo $memsizepreg[3];
echo "<br>";
echo var_dump($memsizepreg);
echo "<br>";
echo $memsizesum;

此外,如果我删除preg_replace,array_sum将得到一个空白。我输出了变量memsize、memsize和memsize和变量,只是为了确保所提取的数据是准确的,而且无论preg_replace在做什么,都会在变量的开头和结尾添加一个1。

输出:

代码语言:javascript
复制
2048 
2048 
2048 
2048
array(4) { [0]=> string(24) "2048 " [1]=> string(24) "2048 " [2]=> string(24) "2048 " [3]=> string(23) "2048" } 
120481
120481
120481
120481
array(4) { [0]=> string(6) "120481" [1]=> string(6) "120481" [2]=> string(6) "120481" [3]=> string(6) "120481" } 
481924
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-26 02:09:33

正如注释中指出的,有人建议使用“var_dump($array)”,这表明变量的总大小为24个字符,而变量的输出仅显示4个字符。这是由仍然存在并由浏览器处理的XML标记造成的。其中一个标签中有标签,当preg_replace运行时,除了数字之外,所有的数字都会被保留下来,这就移除了标签,但是留下了标签上的1。我能够通过收集wsman命令的内容后运行strip_tags()来修复这个问题,然后我的值匹配。再次感谢评论var_dump的人。不幸的是,你删除了你的评论,所以我无法给予赞扬。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19571322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档