通过substr来实现,先算出后面的那个矩离,与前面那个子串的矩离,然后取子串可以从前面取,也可以从后面取,
如:$str="NAS/NMS COMPSITE (NasdaqSC:^IXIC) Quote data by ReutersIndex Value:2,030.08Trade Time:5:16PM ETChange: 35.40 (1.71%)Prev Close:2,065.48Open:2,072.95Day's Range:2,026.20 - 2,073.4252wk Range:1,359.32 - 2,153.831d";
$strpos1=strpos($str,"Index Value:");
$strpos2=strpos("$str,"Trade Time:");
$length=$strpos2-$strpos1;
$string=substr($str,$strpos1,length);//$string=($str,$strpos2,-length)反向查找

解决方案 »

  1.   

    <?php
    $str = "NAS/NMS COMPSITE (NasdaqSC:^IXIC) Quote data by ReutersIndex Value:2,030.08Trade Time:5:16PM ETChange: 35.40 (1.71%)Prev Close:2,065.48Open:2,072.95Day's Range:2,026.20 - 2,073.4252wk Range:1,359.32 - 2,153.831d";
    $n1 = strpos($str,'Index Value:');
    $n2 = strpos($str,'Trade Time:');
    $n1 += strlen('Index Value:');
    $n = $n2-$n1;$string = substr($str,$n1,$n);
    echo "--- ",$n1,$n2,"<br/><br/>";
    echo "<span style='color: red'>",$string,"</span>";
    ?>
      

  2.   

    我楼上的应该加一句
    $strpos1 += strlen("Index Value:"); 
    才是真正要的结果吧。
      

  3.   

    没有必要那么麻烦吧..<?php
    $str="NAS/NMS COMPSITE (NasdaqSC:^IXIC) Quote data by ReutersIndex Value:2,030.08Trade Time:5:16PM ETChange: 35.40 (1.71%)Prev Close:2,065.48Open:2,072.95Day's Range:2,026.20 - 2,073.4252wk Range:1,359.32 - 2,153.831d";
    preg_match("'Index Value:(.+)Trade Time's",$str,$arr);
    if($arr){
       echo $arr["1"];
    }
    ?>