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
v(?:\d*)=(\w;+)

这将匹配所有 v (后面有数字或没有数字),然后匹配组将在 = 符号之后。是第 1 组。

于 2012-06-07T13:36:51.460 回答
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 回答
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

使用此功能:

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 回答