さて、これがv1=something;v2=something2;という行だとしましょう。
= から始まる v1 の値 (何か) を取得し、 でブレークする方法 ; それを呼び出すことによってv2で同じことが行われます(v1)
function getVal($name){
// some code to start grabbing from = and end by ;
}
私が電話するとき
getVal("v1");
「何か」を返す必要があります
さて、これがv1=something;v2=something2;という行だとしましょう。
= から始まる v1 の値 (何か) を取得し、 でブレークする方法 ; それを呼び出すことによってv2で同じことが行われます(v1)
function getVal($name){
// some code to start grabbing from = and end by ;
}
私が電話するとき
getVal("v1");
「何か」を返す必要があります
これはうまくいくでしょう
v1 =([^;] *)
試合はグループ1になります
正規表現のv1を検索するキーに置き換えるだけです
if (preg_match('/v1=([^;]*)/', $subject, $regs)) {
$result = $regs[1];
} else {
$result = "";
}
あなたはあなたの関数にその行を送る義務があります(あるいはあなたは汚くてそれをグローバルとして使うことができます)。したがって、関数は次のようになります。
<?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;
?>
v(?:\d*)=(\w;+)
これはすべての v (その後に数字があるか数字がない) に一致し、一致グループは = 記号の後にあります。グループ1です。
この関数を使用します:
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;
}
これにより、正確な答えが得られます。
テスト済みで動作しています。:)
あなたの質問を理解できれば、これがあなたが探しているものだと思います:
$line = "v1=something;v2=something2;";
function getVal($name, $line){
preg_match('/'.$name.'=([^;]*)/', $line, $matches);
return $matches[1];
}
echo getVal("v1", $line);