नहीं
सुनिश्चित करें कि आप हियरडॉक या दोहरे उद्धरण चिह्नों के साथ अपने स्ट्रिंग लपेटकर कर रहे हैं, लेकिन एक कम लालची दृष्टिकोण:
$str4 = 'address="St Marks Church",notes="The North East\'s premier..."';
preg_match_all('~(address|notes)="([^"]*)"~i',$str4,$matches);
print_r($matches);
आउटपुट
Array
(
[0] => Array
(
[0] => address="St Marks Church"
[1] => notes="The North East's premier..."
)
[1] => Array
(
[0] => address
[1] => notes
)
[2] => Array
(
[0] => St Marks Church
[1] => The North East's premier...
)
)
preg_split साथ एक अन्य विधि:
//split the string at the comma
//assumes no commas in text
$parts = preg_split('!,!', $string);
foreach($parts as $key=>$value){
//split the values at the = sign
$parts[$key]=preg_split('!=!',$value);
foreach($parts[$key] as $k2=>$v2){
//trim the quotes out and remove the slashes
$parts[$key][$k2]=stripslashes(trim($v2,"'"));
}
}
आउटपुट इस तरह दिखता है:
Array
(
[0] => Array
(
[0] => address
[1] => St Marks Church
)
[1] => Array
(
[0] => notes
[1] => The North East's premier...
)
)
सुपर धीमी गति से पुराने skool विधि:
$len = strlen($string);
$key = "";
$value = "";
$store = array();
$pos = 0;
$mode = 'key';
while($pos < $len){
switch($string[$pos]){
case $string[$pos]==='=':
$mode = 'value';
break;
case $string[$pos]===",":
$store[$key]=trim($value,"'");
$key=$value='';
$mode = 'key';
break;
default:
$$mode .= $string[$pos];
}
$pos++;
}
$store[$key]=trim($value,"'");
स्रोत
2013-06-06 19:58:24
क्या आप केवल अपनी अभिव्यक्ति में अल्फान्यूमेरिक वर्णों पर विचार करना चाहते हैं? –
\ 'को छोड़कर' और दूसरे 'के बीच मूल रूप से कुछ भी नहीं। मैं एक रेगेक्स नौसिखिया का थोड़ा सा हूँ, मुझे डर है कि शायद पहले भी गलत हो गया है? –