从包含键值的行中获取值:value可以包含:

时间:2012-12-06 22:42:48

标签: php

  

可能重复:
  PHP split alternative?

我是php的初学者, 基本上我试图从一行中提取价值 行格式是键:值

该值可能包含:

所以我想把它分成两部分,以便我在第一次出现时左右两边:

我写了一个函数,因为这将执行文件的每一行

    /**
     * Returns value of the key if its available in line
     * example line 
     * somekey: someva:lue
     * @param type $line  pass full line
     * @param type $key pass the key
     * @return type  someva:lue
     */
    function extractValue($line, $key){
        $value = null;
        $value_array = split(":", $line);
        if(count($value_array)== 2)    
        {
            if($value_array[0] == $key)
               $value = $value_array[1];
        }
        return $value; 
    }

我今天刚开始用netbeans编写它,并得到以下警告:拆分已拆除等等

 Deprecated: Function split() is deprecated in C:\wamp\www\myprojects\PhpProject1\upload_log.php on line 92

我对php不是很熟悉,你能建议一个替代功能吗?基本上我想把线分成两部分键:值想得到一个线和键的值

感谢您的帮助,

3 个答案:

答案 0 :(得分:4)

首先,请使用explode()代替split()

但是,您的代码很好,您也可以使用:

function extractValue($line, $key)
{
    list($_key, $value) = explode(':', $line, 2);
    if ($_key == $key) {
        return $value;
    }

    return null;
}

答案 1 :(得分:3)

Simply

$value = explode(':', $line, 2);

2是要获得的最大元素数,这符合您的问题。

答案 2 :(得分:1)

如果值也可以包含:符号,则可能更容易使用:

$value = ltrim(strstr($line, ":"), ":");
               ^^^^^^ Find the remainder of the string from the first : on
         ^^^^^ Get rid of the : at the start of the result

修改:您可以采用相同的方式获取密钥:

$key = trim(strstr($line, ":", true));
                               ^^^^ Get everything before the first : symbol

请参阅strstr上的手册。

我正在修剪它,以防钥匙之前或之后有一些空白区域。