美好的一天。 我有一個正則表達式的問題,我真的卡住了,問題是,我想提取字段可以像組成:使用可選模式複雜化正則表達式
NULL
Name#Size^Value#XXL^Quantity#3
Name#Size^Value#S^Name#Color^Value#Black^Quantity#2
大小將永遠是第一位,顏色(可選)第二個值,最後一個數量。 當然,我想獲得這些值插入到數據庫中。
其實我已經這樣做了:
$txt='Name#Size^Value#S^Name#Color^Value#Black^Quantity#2';
$re1='(Name#Size\\^Value#)';
$re2='((?:[a-z][a-z0-9_]*))';
$re3='(\\^Name#Color\\^Value#)';
$re4='((?:[a-z][a-z0-9_]*))';
$re5='(\\^Quantity#)';
$re6='(\\d+)';
if ($c=preg_match_all ("/".$re1.$re2.$re3.$re4.$re5.$re6."/is", $txt, $matches))
{
$word1=$matches[1][0];
$var1=$matches[2][0];
$word2=$matches[3][0];
$var2=$matches[4][0];
$word3=$matches[5][0];
$int1=$matches[6][0];
print "<br> Size: $var1 <br> Color: $var2 <br> Quantity: $int1";
}
,但我不知道我如何能匹配的顏色可選(在這種情況下,把數量作爲第二個參數
任何人都可以。幫我在這? 它應該是完全錯誤的。在這種情況下,請點我好的方向發展。
爲什麼*尺寸*和*顏色*每有一個'Name'和'Value'場,但*數量*不? – simbabque
這是問題之一,我對字符串本身有任何控制權,並且以這種奇怪的方式構建:/ –
請參閱我的回答,以獲取不使用複雜正則表達式的簡單方法。 – simbabque