我有一個字符串,如下所示(示例中的字母可以是數字或文本,可以是大寫或小寫,也可以是兩者)如果值是句子,則應該在單引號):使用正則表達式對字符串進行爆炸
$string="a,b,c,(d,e,f),g,'h, i j.',k";
我該如何爆炸以獲得以下結果?
Array([0]=>"a",[1]=>"b",[2]=>"c",[3]=>"(d,e,f)",[4]=>"g",[5]=>"'h,i j'",[6]=>"k")
我認爲使用正則表達式將是一個快速以及乾淨的解決方案。任何想法?
編輯: 這是我迄今所做的,這是有括號之間的長期部分字符串很慢:
$separator="*"; // whatever which is not used in the string
$Pattern="'[^,]([^']+),([^']+)[^,]'";
while(ereg($Pattern,$String,$Regs)){
$String=ereg_replace($Pattern,"'\\1$separator\\2'",$String);
}
$Pattern="\(([^(^']+),([^)^']+)\)";
while(ereg($Pattern,$String,$Regs)){
$String=ereg_replace($Pattern,"(\\1$separator\\2)",$String);
}
return $String;
這將替換所有括號之間的逗號。然後我可以用逗號分解它,並用原來的逗號代替$separator
。
你試過爆炸()函數? ref - http://php.net/manual/en/function.explode.php – 2013-05-10 06:56:07
到目前爲止你嘗試了什麼?你的實際問題是什麼(除了要讓別人爲你做)。 – 2013-05-10 06:57:05
請準確描述輸入字符串的外觀。它總是隻是',並且('?是必需的值總是小寫字母,並且只有其中的一個? – dognose 2013-05-10 07:31:58