-2

可能重复:
PHP 拆分替代方案?

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

该值可能包含:

所以我想把它分成两部分,这样我就得到了第一次出现的右侧和左侧:

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

    /**
     * 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不是很熟悉,你能推荐一个替代函数吗?基本上我想把这条线分成两部分 key:value 想要得到一个给定的 line 和 key 的值

感谢帮助,

4

3 回答 3

4

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

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

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

    return null;
}
于 2012-12-06T22:44:30.773 回答
3

简单地说

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

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

于 2012-12-06T23:12:36.947 回答
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的手册。

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

于 2012-12-06T22:59:19.287 回答