我的字符串是:
$p['message'] = '[name]Fozia Faizan[/name]\n[cell]03334567897[/cell]\n[city]Karachi, Pakistan[/city]';
我想要做的是使用REGEX模式以获得如下结果:
Name: Fozia Faizan
Cell #: 03334567897
City: Karachi, Pakistan
我试过这个正则表达式:
$regex = "/\\[(.*?)\\](.*?)\\[\\/\\1\\]/";
$message = preg_match_all($regex, $p['message'], $matches);
但它根本不起作用。请帮忙
答案 0 :(得分:1)
您的正则表达式已经有效,只需将结果合并到$matches
:
$p['message'] = '[name]Fozia Faizan[/name]\n[cell]03334567897[/cell]\n[city]Karachi, Pakistan[/city]';
$regex = "/\\[(.*?)\\](.*?)\\[\\/\\1\\]/";
preg_match_all('~\[(.*?)](.*?)\[/\1]~', $p['message'], $matches);
$result = array_combine ($matches[1], $matches[2]);
print_r($result);
会给你:
Array
(
[name] => Fozia Faizan
[cell] => 03334567897
[city] => Karachi, Pakistan
)
答案 1 :(得分:1)
好吧,使用@ jh314的精彩回复,你可以写:
$p['message'] = '[name]Fozia Faizan[/name]\n[cell]03334567897[/cell]\n[city]Karachi, Pakistan[/city]';
$m = array();
preg_match_all('|\[(.*?)](.*?)\[/\1]|', $p['message'], $m);
$result = @array_combine($m[1], $m[2]);
$out = "Name: {$result['name']}\nCell #: {$result['cell']}\nCity: {$result['city']}";
echo $out;
//$outHTML = nl2br("Name: {$result['name']}\nCell #: {$result['cell']}\nCity: {$result['city']}");
//echo $outHTML;
那会给你:
Name: Fozia Faizan
Cell #: 03334567897
City: Karachi, Pakistan
编辑:您也可以在函数名称之前添加@
,如下所示:@array_combine
,以便在页面顶部显示错误,只有这样做才会工作,你得到预期的结果。