从php输出中删除某些文本

时间:2014-01-08 13:15:13

标签: php mysql string preg-replace

这个php脚本基本上做了速度测试。它完美地运作。唯一的问题是它回显文本 MB / s 并且似乎无法从输出中删除它。我只想要原始的#,比如说速度测试的回复为 23.76 MB / s 我只想要输出 23.76

任何帮助将不胜感激。我只是花了很多时间试图得到这个,这就是我想出的。是的,我浏览了网站和Google,但我似乎无法正常工作。

//Speedtest Function
function get_speedtest() {
    exec("/usr/bin/wget -O /dev/null http://cachefly.cachefly.net/1mb.test 2>&1",$output);
        end($output);
        $a=prev($output);
        if ($start=strpos($a, '(')) 
        if ($end=strpos(substr($a,$start+1), ')')) {
        $b = substr($a, $start+1, $end);
        echo $b;
        unset ($a, $b);
        } else
echo '0';
}

echo get_speedtest();

JJ

3 个答案:

答案 0 :(得分:1)

这样做......

echo $result=explode(' ',get_speedtest())[0]; //"prints" 23.76

好像你遇到了 Array Deferencing 问题....所以这样做..

$result=explode(' ',get_speedtest());
echo $result[0]; //"prints" 23.76

答案 1 :(得分:1)

  1. 您的get_speedtest()不会返回任何内容。
  2. 它并不总是MB / s,例如在我的连接上我得到200 KB / s

  3. <?php
    //Speedtest Function
    function get_speedtest() {
        exec("/usr/bin/wget -O /dev/null http://cachefly.cachefly.net/1mb.test 2>&1",$output);
        if(preg_match('/\(([0-9.]+) (..)\/s\)/', $output[count($output) - 2], $m)){
            return array('speed' => $m[1], 'unit' => $m[2]);
        }
        return array();
    }
    
    print_r(get_speedtest());
    echo "\n"; 
    

答案 2 :(得分:0)

$b是一个字符串,因此您可以对其进行操作以格式化或剪切您想要的任何内容。

一个解决方案是echo split(' ', $b)[0]