如何削减单词的小问题

时间:2011-09-09 16:09:13

标签: php

<?php
    $string = 
    '--os
    windows,linux
    --os
    Mac,Linux
    --os
    Mac,windows
    ';

    $str__len = strlen('--os');
    $strr_pos = strrpos($string,'--os') + $str__len;
    $subb_str = substr($string,$strr_pos,100000);
    echo $subb_str;
    /*
    OUTPUT
    Mac,windows
    */

?>

但如何获得中心和第一个操作系统(Mac,Linux)和(Windows,Linux)? 我的想法不多但它很愚蠢而且很慢!

注意: $ string varibale包含大数据! 它只包含三个--os标签 但每个--os标签包含约1000行! 所以,我希望获得专业代码以避免减速!

谢谢

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你想要将'--os'子串之间的字符串分开。您可以使用explode()函数轻松完成此操作:

$string = 
'--os
windows,linux
--os
Mac,Linux
--os
Mac,windows
';

$arr=explode('--os\n',$string) 

//"\n" is the newline character.  
//The elements are now '','windows,linux','Mac,linux','Mac,windows'.


//Array of the operating systems that we want:
$operating_systems=array();

//Loop through $arr:
foreach($arr as $x)
{
  if($x!='') //Ignore the silly '' element.
  {
    $sub_arr=explode(",",$x); //Make a new sub-array.
                              //so, if $x='windows,linux', 
                              //then $sub_arr has the elements "windows" and "linux".
    foreach($sub_arr as $i)
    {
      array_push($operating_systems,$i); //put these OS names into our array.
    }
  }

}