【问题标题】:Extract file in PHP and display content in chart在 PHP 中提取文件并在图表中显示内容
【发布时间】:2014-02-19 17:15:22
【问题描述】:

我有一个名为“test.txt”的文件,其内容如下:

BEGIN_SESSION 7
1h+ 47
30mn-1h 20
15mn-30mn 16
5mn-15mn 43
2mn-5mn 29
30s-2mn 35
0s-30s 170
END_SESSION

感谢用户wumm,它帮助我找到了一种提取数据并显示它的方法。所以问题是:我已经编写了这个在饼图中显示数据的函数:

function awstats_extract_session($session)
{
# Session range - Number of visits

$session = explode("\n", $session) ; 
unset($session[(count($session)-1)]) ; 
unset($session[0]) ; 
$sessions = array();
foreach ($session as $key => $value) {
    $session[$key] = explode(" ", $value) ;
    //print_array($session[$key]);
    $sessions[] = array($session[$key][0],$session[$key][1]) ; 
}
$sessions = json_encode($sessions, JSON_NUMERIC_CHECK) ; 


?>
<div id="collapse_awstats_extract_session" class="accordion-body collapse in">
    <div class="accordion-inner">
        <div id="chart-session" style="height:350px; width:700px; margin:0 auto;"></div>
    </div>
</div>
<script>
    jQuery(document).ready(function(){
      var data = <?php echo $sessions; ?>;
      var plot1 = jQuery.jqplot('chart-session', [data], {
        title: 'Durée des visites',
        seriesDefaults: {
          renderer: jQuery.jqplot.PieRenderer, 
          rendererOptions: {
            showDataLabels: true,
          },
        }, 
        legend: { show:true, location: 'e' },           
      });
    });
</script>

还有一个函数可以调用前一个函数:

 <?php
            echo '<div class="accordion-group">';

            preg_match("/BEGIN_SESSION(.*)END_SESSION/is", $awstats, $matches);
            $session = $matches[0];
            preg_match('/30s-2mn ([0-9]{2})/ms', $session, $matches); 
            $a = $matches[1];
            preg_match('/0s-30s ([0-9]{3})/ms', $session, $matches); 
            $b = $matches[1];

            var_dump($a+$b);



            awstats_title("<a class='accordion-toggle' data-toggle='collapse' data-parent='#accordion_awstats_navigation' href='#collapse_awstats_extract_session'><span class='glyphicon glyphicon-collapse-down'></span> Durée des visites</a>", "session") ;
            awstats_extract_session($session) ;

我希望显示所有内容,但最后两个“30s-2mn 35”“0s-30s 170” 我想将其显示为“0s-2mn 205”。请帮助 PS: 或者有没有办法将文件“test.txt”更改为“test2.txt”:

BEGIN_SESSION 7
1h+ 47
30mn-1h 20
15mn-30mn 16
5mn-15mn 43
2mn-5mn 29
0s-2mn 205
END_SESSION

谢谢!

【问题讨论】:

  • 我想帮助你,但我不确定你的问题是什么。您能否尝试改写您的实际问题。
  • 有没有办法编辑第一个文件“test.txt”以使其成为“test2.txt”?这样当我调用 $session 时,它会调用第二个文件!

标签: php function pie-chart text-extraction


【解决方案1】:

希望这会有所帮助。

preg_match("/BEGIN_SESSION(.*)END_SESSION/is", $test, $matches);
$session = $matches[0];
preg_match('/30s-2mn ([0-9]{2})/ms', $session, $matches); 
$a = $matches[1];
preg_match('/0s-30s ([0-9]{3})/ms', $session, $matches); 
$b = $matches[1];

$session = preg_replace('/30s-2mn ([0-9]{2})\n0s-30s ([0-9]{3})/ms', "0s-2mn " . ($a+$b), $session);

然后$session 包含您在问题的最后一个代码示例中显示的文本。你可以写出来。

$session 现在包含:

BEGIN_SESSION 7
1h+ 47
30mn-1h 20
15mn-30mn 16
5mn-15mn 43
2mn-5mn 29
0s-2mn 205
END_SESSION

【讨论】:

  • 对不起!但是 preg_replace() 函数似乎没有替换我不知道为什么的数据!还是一样!
  • 如果我使用此代码将输出输出到文件test2.txt
  • 对不起!但我想要$session 中的数据!有办法吗?
  • 当然只需在第一段代码的最后一行将 $n 更改为 $session 即可。我将更新我的答案。
  • 很抱歉打扰您,但当我尝试var_dump($session); 时,它会显示:string(111) "BEGIN_SESSION 7 1h+ 47 30mn-1h 20 15mn-30mn 16 5mn-15mn 43 2mn-5mn 29 30s-2mn 35 0s-30s 170 END_SESSION" 我不知道问题出在哪里?
猜你喜欢
  • 1970-01-01
  • 2017-07-16
  • 2012-12-05
  • 2017-11-09
  • 1970-01-01
  • 2011-10-26
  • 2012-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多