-2

重複の可能性:
PHP分割の代替?

私はPHPの初心者です。基本的に、行の形式がkey:valueである行から値を抽出しようとしています。

値には次のものが含まれる可能性があります。

だから私はそれを2つの部分に分けて、最初の発生の右側と左側を取得したいと思います:

ファイルの1行ごとに実行されるので、私が書いた関数があります

    /**
     * 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でコーディングを開始しましたが、splitがdeprectaedであるという次の警告が表示されます。

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

私はphpにあまり詳しくありませんが、別の機能を提案してもらえますか?基本的に、行を2つの部分に分割しますkey:value行とキーを指定して値を取得します

手伝ってくれてありがとう、

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 に答える