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