0


さて、これがv1=something;v2=something2;という行だとしましょう。

= から始まる v1 の値 (何か) を取得し、 でブレークする方法 ; それを呼び出すことによってv2で同じことが行われます(v1)

function getVal($name){
  // some code to start grabbing from = and end by ;
}

私が電話するとき

getVal("v1");

「何か」を返す必要があります

4

5 に答える 5

1

これはうまくいくでしょう

v1 =([^;] *)

試合はグループ1になります

正規表現のv1を検索するキーに置き換えるだけです

if (preg_match('/v1=([^;]*)/', $subject, $regs)) {
    $result = $regs[1];
} else {
    $result = "";
}
于 2012-06-07T13:34:22.390 に答える
0

あなたはあなたの関数にその行を送る義務があります(あるいはあなたは汚くてそれをグローバルとして使うことができます)。したがって、関数は次のようになります。

<?php
function getVal($name, $line){
    // some code to start grabbing from = and end by ;
    preg_match('#;?' . $name . '=([^;]+);?#', $line, $aMatches);
    if(isset($aMatches[1])) {
        return $aMatches[1];
    }
    return false;
}

$line = 'v1=something;v2=something2';
$v1 = getVal('v1',$line);
echo $v1;
?>
于 2012-06-07T13:44:13.020 に答える
0
v(?:\d*)=(\w;+)

これはすべての v (その後に数字があるか数字がない) に一致し、一致グループは = 記号の後にあります。グループ1です。

于 2012-06-07T13:36:51.460 に答える
0

この関数を使用します:

function getVal($name, $line){
    preg_match("/{$name}=(.+);(v(\d+)=|$)/U", $line, $matches);
    $matches = $matches[0];
    $matches = preg_replace("/{$name}=/","",$matches);
    $matches = preg_replace("/;v(\d+)=/","",$matches);
    return $matches;
}

これにより、正確な答えが得られます。

テスト済みで動作しています。:)

于 2012-06-07T13:53:29.887 に答える
0

あなたの質問を理解できれば、これがあなたが探しているものだと思います:

$line = "v1=something;v2=something2;";

function getVal($name, $line){
    preg_match('/'.$name.'=([^;]*)/', $line, $matches);
    return $matches[1];
} 

echo getVal("v1", $line);
于 2012-06-07T13:42:21.830 に答える