分隔字符串,有点难度哦

crazyboy2005 2012-06-06 10:44:13
$str = "html='<a id=\'test\'>hello,world</a>', name='jiang, lin', year=12, x1=3, mb='slink', mx='hiang'";

如何将其中的值分离成下面的键值对:
html='<a id=\'test\'>hello,world</a>'
name='jiang, lin'
year=12
x1=3
mb='slink'
mx='hiang'

谢谢各位不吝赐教
...全文
123 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2012-06-06
  • 打赏
  • 举报
回复
[User:root Time:13:03:26 Path:/home/liangdong/php]$ php preg.php
Array
(
[0] => html='<a id=\'test\'>hello,world</a>'
[1] => name='jiang, lin'
[2] => year=1
[3] => x1=3
[4] => mb='slink'
[5] => mx='hiang'
)
[User:root Time:13:03:28 Path:/home/liangdong/php]$ cat preg.php
<?php
$str = "html='<a id=\'test\'>hello,world</a>', name='jiang, lin', year=12, x1=3, mb='slink', mx='hiang'";
$nmatches = preg_match_all("/\w*=('.*(?<!\\\\)'|\d+)/iUs", $str, $matches);
print_r($matches[0]);
?>
qq120848369 2012-06-06
  • 打赏
  • 举报
回复
呀, year那里怎么没有''了。
qq120848369 2012-06-06
  • 打赏
  • 举报
回复
[User:root Time:12:28:25 Path:/home/liangdong/php]$ cat preg.php 
<?php
$str = "html='<a id=\'test\'>hello,world</a>', name='jiang, lin', year=12, x1=3, mb='slink', mx='hiang'";
$nmatches = preg_match_all("/\w*='.*(?<!\\\\)'/iUs", $str, $matches);
print_r($matches[0]);
?>
[User:root Time:12:28:26 Path:/home/liangdong/php]$ php preg.php
Array
(
[0] => html='<a id=\'test\'>hello,world</a>'
[1] => name='jiang, lin'
[2] => mb='slink'
[3] => mx='hiang'
)
一起混吧 2012-06-06
  • 打赏
  • 举报
回复
$str=preg_replace("/, (?=\w+=)/",'&',$str);
parse_str($str,$ar);
print_r($ar);

Array
(
[html] => '<a id=\'test\'>hello,world</a>'
[name] => 'jiang, lin'
[year] => 12
[x1] => 3
[mb] => 'slink'
[mx] => 'hiang'
)
amani11 2012-06-06
  • 打赏
  • 举报
回复
或者不要'


$str = "html='<a id=\'test\'>hello,world</a>', name='jiang, lin', year=12, x1=3, mb='slink', mx='hiang'";
preg_replace("/([\w]+)=([']?)(.*?)\\2(?=(,\s*[\w]+=|$))/ie", "\$arr['\\1']='\\3'", $str);
print_r($arr);
/*

Array
(
[html] => <a id=\'test\'>hello,world</a>
[name] => jiang, lin
[year] => 12
[x1] => 3
[mb] => slink
[mx] => hiang
)

*/
amani11 2012-06-06
  • 打赏
  • 举报
回复

$str = "html='<a id=\'test\'>hello,world</a>', name='jiang, lin', year=12, x1=3, mb='slink', mx='hiang'";
preg_replace("/([\w]+)=(.*?)(?=(,\s*[\w]+=|$))/ie", "\$arr['\\1']='\\2'", $str);
print_r($arr);
/*
Array
(
[html] => '<a id=\'test\'>hello,world</a>'
[name] => 'jiang, lin'
[year] => 12
[x1] => 3
[mb] => 'slink'
[mx] => 'hiang'
)

*/
xuzuning 2012-06-06
  • 打赏
  • 举报
回复
$str = "html='<a id=\'test\'>hello,world</a>', name='jiang, lin', year=12, x1=3, mb='slink', mx='hiang'";

$ch = ', ';
$r = array();
$t = '';
foreach(explode($ch, $str) as $v) {
if(substr_count($t, "'")%2) {
$t .= $ch.$v;
continue;
}
if($t) $r[] = $t;
$t = $v;
}
if($t) $r[] = $t;

print_r($r);
Array
(
[0] => html='<a id=\'test\'>hello,world</a>'
[1] => name='jiang, lin'
[2] => year=12
[3] => x1=3
[4] => mb='slink'
[5] => mx='hiang'
)

happypiggy2010 2012-06-06
  • 打赏
  • 举报
回复
这个不是很烦。转几次应该可以出来的。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧