Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP预赛?_Php_Regex_Find_Preg Match - Fatal编程技术网

PHP预赛?

PHP预赛?,php,regex,find,preg-match,Php,Regex,Find,Preg Match,好吧,假设这是一条线 v1=某物;v2=某物2 如何从=开始获取v1值(某物)并在处中断;对于v2,调用它(v1) 当我打电话时 getVal("v1"); 它应该返回“something”这样就行了 v1=([^;]*) 比赛将在第一组进行 只需将regex中的v1替换为要查找的键即可 if (preg_match('/v1=([^;]*)/', $subject, $regs)) { $result = $regs[1]; } else { $result = ""; }

好吧,假设这是一条线
v1=某物;v2=某物2

如何从=开始获取v1值(某物)并在处中断;对于v2,调用它(v1)

当我打电话时

getVal("v1");
它应该返回“something”

这样就行了

v1=([^;]*)

比赛将在第一组进行

只需将regex中的v1替换为要查找的键即可

if (preg_match('/v1=([^;]*)/', $subject, $regs)) {
    $result = $regs[1];
} else {
    $result = "";
}

这将匹配所有v(后面有数字或没有数字),然后匹配组将位于=号后面。这是第一组。

如果我理解你的问题,那么我认为这就是你想要的:

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

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

echo getVal("v1", $line);

您必须将该行发送到您的函数(或者您可以将其用作全局)。 所以,你的函数可以是这样的:

<?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;
?>

使用此功能:

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;
}
这将给你确切的答案


测试和工作:)

您不需要regexp您需要
split
您不需要split您需要regexp:)注意,您应该使用一个。如果你在那里更具体一些,那么别人会更容易找到你,也会吸引更多具体的帮助,而不仅仅是那些对神秘标题好奇的人。避免重新列出标签、多余的求助请求、问号,毫无疑问。@VIPINJAIN那么它也可以包含
|
。询问者没有指定除了字母以外的任何其他要求,我假设如果遇到特殊字符,他们可以自己更新正则表达式。
<?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;
?>
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;
}