html刮和循环的字符串

时间:2014-05-28 11:21:08

标签: php string loops screen-scraping cycle

问题很简单,我正在做一些html抓取以使用php获取总线时间线。 我有以下字符串:

Fermata 1179 - Linea 203 -> 13:12 Linea 254 -> 13:19 Linea 203 -> 13:20 Linea 1 -> 13:29

Fermata 1179是停止的id,使用substr()很容易获得

我似乎无法做的是循环线路es:

Linea 203 - > 13:12

Linea 254 - > 13时19分

Linea 203 - > 13:20

Linea 1 - > 13时29分

我想显示为

Linea 203 at 13:12

Linea 254 at 13:19

Linea 203 at 13:20

Linea 1 at 13:29

到目前为止我做了什么(我知道它的狗屎代码,但我必须以某种方式开始:()

<?php if ( $scraped_data != 'Previsioni in fermata non disponibili.'){

        // stringa: Fermata 1494 - Linea 202 -> 09:28
        echo 'dati:<br/>'.$scraped_data;    
        $x= 0;


        $idpalina =  substr($scraped_data,8,4); // ID PALINA
        echo '<br />id palina: '.$idpalina;
        echo '<br />posizione di " - ": '.strpos($scraped_data, ' - ');
        echo '<br />';

        // MI PRENDO IL NOME DELLA LINEA
        echo '<br />'.substr($scraped_data,strpos($scraped_data, ' -  ')+2,strpos($scraped_data, ' -> ')-(strpos($scraped_data, ' -  ')+2)); 
        //L ORA DELLA LINEA
        echo '<br />'.substr($scraped_data,strpos($scraped_data, ' -> ')+4,5); 

        // LA POSIZIONE DEL SEPARATORE PER L'ORA
        echo '<br />posizione di " ->": '.strpos($scraped_data, ' -> ');

        // CERCA LA PROSSIMA POSIZIONE DI LINE
        $x= strpos($scraped_data, '->') +9;
        echo  '<br />x= '.$x;
        echo  '<br />strlen= '.strlen($scraped_data);
        echo  '<br />i='.$i;
        // MI PRENDO IL NOME DELLA LINEA
        echo '<br />'.substr($scraped_data,strpos($scraped_data, ' -  ')+$x,strpos($scraped_data, ' -> ')-(strpos($scraped_data, ' -  ')+$x)); 
        echo '<br />'.
        }
        else
        echo 'Previsioni non disponibili';
        ?>
希望有人能帮助我,因为我疯了:(

2 个答案:

答案 0 :(得分:1)

您可以根据需要使用explode来分解字符串:

$string = 'Fermata 1179 - Linea 203 -> 13:12 Linea 254 -> 13:19 Linea 203 -> 13:20 Linea 1 -> 13:29';

$parts = explode('Linea', $string);

//start from 1, as the 1st item in array is 'Fermata 1179 - '
for($i=1;$i<count($parts);$i++){
    echo '<p>Linea ' . str_replace('->', 'at', $parts[$i]) . '</p>';
}

答案 1 :(得分:0)

我只会使用爆炸:

explode(' -> ', 'Fermata 1179 - Linea 203 -> 13:12 Linea 254 -> 13:19 Linea 203 -> 13:20 Linea 1 -> 13:29');

返回一个数组:

[0] => 'Linea 203'
[1] => '13:12'
[2] => 'Linea 254'
[3] => '13:19'

然后你可以借助for循环打印出来。