好吧,我們假設這是一條線
v1 = something; v2 = something2;PHP preg match?
如何獲得v1值(東西)從=開始,並在中斷;而同樣與V2通過調用它(V1)
function getVal($name){
// some code to start grabbing from = and end by ;
}
當我打電話
getVal("v1");
它應該返回 「東西」 來完成
好吧,我們假設這是一條線
v1 = something; v2 = something2;PHP preg match?
如何獲得v1值(東西)從=開始,並在中斷;而同樣與V2通過調用它(V1)
function getVal($name){
// some code to start grabbing from = and end by ;
}
當我打電話
getVal("v1");
它應該返回 「東西」 來完成
這將工作
V1 = ([^;] *)
比賽將在第1組
只是要查找
if (preg_match('/v1=([^;]*)/', $subject, $regs)) {
$result = $regs[1];
} else {
$result = "";
}
v(?:\d*)=(\w;+)
這將匹配所有V(與後位或沒有數字),然後匹配組會後的關鍵替換V1的正則表達式=符號。這是組1
如果v1的值也包含分號? –
@VIPINJAIN然後它也可以包含'!'或者'''或者''''。提問者沒有指定除字母之外的其他任何要求,並且我假設他們可以在遇到特殊字符時自己更新正則表達式。 –
如果我明白你的問題,那麼我認爲這是你在找什麼:
$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;
}
這會給你確切的答案。
測試和工作。:)
你不需要你需要正則表達式'split' – mathk
你不需要你需要正則表達式:) – buckley
請注意,您應該寧可使用[內容摘要問題標題]分裂(http://stuck.include-once.org/#help7)。如果你在那裏更具體,它會更容易找到其他人,並吸引更多的具體幫助,而不是隻有任何人對神祕頭條感興趣。避免重複標籤,多餘的請求幫助,沒有問題的問號。 – mario