好的,假设这是一行
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 = "";
}
v(?:\d*)=(\w;+)
这将匹配所有 v (后面有数字或没有数字),然后匹配组将在 = 符号之后。是第 1 组。
如果我理解你的问题,那么我认为这就是你要找的:
$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;
}
这会给你准确的答案。
测试和工作。:)