高分求一段PHP程序,或者思路。字符串形式类似(((a)b)c)转换为array(array(array('a'),'b'),'c')
发布网友
发布时间:2022-04-07 05:25
我来回答
共4个回答
懂视网
时间:2022-04-07 09:46
eval参数
code:
需要被执行的字符串
代码不能包含打开/关闭 PHP tags。比如, 'echo "Hi!";' 不能这样传入: '<?php echo "Hi!"; ?>'。但仍然可以用合适的 PHP tag 来离开、重新进入 PHP 模式。比如 'echo "In PHP mode!"; ?>In HTML mode!<?php echo "Back in PHP mode!";'。
除此之外,传入的必须是有效的 PHP 代码。所有的语句必须以分号结尾。比如 'echo "Hi!"' 会导致一个 parse error,而 'echo "Hi!";' 则会正常运行。
return 语句会立即中止当前字符串的执行。
代码执行的作用域是调用 eval() 处的作用域。因此,eval() 里任何的变量定义、修改,都会在函数结束后被保留。
eval返回值
eval() 返回 NULL,除非在执行的代码中 return 了一个值,函数返回传递给 return 的值。 PHP 7 开始,执行的代码里如果有一个 parse error,eval() 会抛出 ParseError 异常。在 PHP 7 之前, 如果在执行的代码中有 parse error,eval() 返回 FALSE,之后的代码将正常执行。无法使用 set_error_handler() 捕获 eval() 中的解析错误。
eval使用示例
<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "
";
eval("$str = "$str";");
echo $str. "
";
?>
以上例程会输出:
This is a $string with my $name in it.
This is a cup with my coffee in it.
热心网友
时间:2022-04-07 06:54
我这里有个思路,你可以参考下。
$str = '(((a)b)c)';
$str = preg_replace('/(\w+)/','"\1"',$str); // 在连续的字母两边加上引号,((("a")"b")"c")
$str = str_replace(array('(',')'),array('array(','),'),$str); // 把括号()替换成 array(),
$str = trim($str,','); // 把最后多余的逗号去掉。
eval('$rs='.$str); // 将$str当做php代码执行,相当于赋值给$rs
var_mp($rs);追问这个思路靠谱,先追分,再追问。
你好,帮我修改一下正则,连续的字母两边如果有引号就不加,没有再加。其他的我自己再改
我明天上班来处理
追答$str = '(((“a”)b)c)';
$str = str_replace('"','',$str); // 清除双引号
$str = str_replace('\'','',$str); // 清除单引号
其他的同上,
热心网友
时间:2022-04-07 08:12
$str = "(((a)b)c)";
$str = preg_replace('/([^()]+)/i', '"\1"' , $str);
$str = str_replace('""', '"', str_replace('\'"', '"', $str)); //追加:解决引号问题
$str = str_replace(')', '),', $str);
$str = substr($str, 0, -1);
$str = str_replace('(', '[', $str);
$str = str_replace(')', ']', $str);
$arr = json_decode($str);
print_r($arr);exit;
以上是我测试的代码,思路就是试图先转换为json格式追问可能我没完全表达清楚,字符串的每一层都可能有多个并列的值分别表示不同的数组元素,例如((g,(a,d)b,e)c,f)对应
array(
array(
'g',
array('a','d'),
'b',
'e'
),
array('c','f')
)
追答把$str = preg_replace('/([^()]+)/i', '"\1"' , $str);改成
$str = preg_replace('/([^(),]+)/i', '"\1"' , $str);即可,其它不动
不过不对哦,计算结果是
Array
(
[0] => Array
(
[0] => g
[1] => Array
(
[0] => a
[1] => d
)
[2] => b
[3] => e
)
[1] => c
[2] => f
)
你核对一下,我觉得是你录入的问题 array('c','f')应该是'c', 'f',它们和array('g'...)是同级别的
热心网友
时间:2022-04-07 09:47
应该可以用正则来匹配替换追问能不能具体一点
怎样把php数组转换成字符串,php implode
首先,创建一个PHP文件,定义一个示例数组,例如:$arr = array("I","have","an","apple")。接下来,关键步骤是调用implode()函数,传入数组变量和一个可选的分隔符(默认为空字符)。例如,要将数组转换为无分隔符的字符串,可以使用$str = implode($arr);如果需要添加分隔符,如"+++”,则...
PHP 如何把 字符串 转为数组
回答:正则做 <?php$t=' code:-1 ErrMsg:用户不存在';preg_match('/code:(-?\d+)\s+ErrMsg:(.+)/', $t,$m);$a=array();$a['code']=intval($m[1]);$a['ErrMsg']=$m[2];var_dump($a);?>代码未测试,自多体会...
Python中如何将str格式的字符串转化成array格式的数组
b = '146,135,123,145't = b.split(',')# py2results = map(int,t)# py3# results = list(map(int,t))a = np.array(results)
JavaScript如何将字符串转换为数组?分享这6种方法
首先,split('')方法,作为ES6的原生工具,简单高效,但对Unicode字符处理有限,需注意编码问题。其次,扩展语法([…str])适用于ES2015,方便易用,不受字符限制。接着,Array.from(str)则通过创建新数组实现,适用于需要浅拷贝的情况。然而,Object.assign([], str)虽然能复制对象属性,但它是深拷贝...
PHP如何把JSON字符串转为数组
在PHP中可以使用“json_decode()”函数把JSON字符串转为数组,该函数的作用对JSON格式的字符串进行解码,其语法为“json_decode(str,assoc)”,使用时将字符串传入第1个参数并将第2个设置为TRUE即可。示例代码:json = '{"a"1,"b"2,"c"3,"d"4,&...
$a=array(array(a=>'1',b=>'b'),array(a=>'1',b=>'c'),array(a=>'d...
a=array(array(a=>'1',b=>'b'),array(a=>'1',b=>'c'),array(a=>'d',b=>'e'));for ($i=0;$i<count($a);$i++){ if($arr[$a[$i]['a']]==""){ arr[$a[$i]['a']]=$a[$i]['b'];} else { arr[$a[$i]['a']].=",".$a[$i]['b'];} } i=...
PHP的问题,编写一个程序对三个数按由小到大的顺序排列
以下是一个简单的PHP程序,用于对三个数进行由小到大的排序:php<?php function sortNumbers($a, $b, $c) { if ($a > $b) { temp = $a;a = $b;b = $temp;} if ($a > $c) { temp = $a;a = $c;c = $temp;} if ($b >(10, 2, 8);sortedNumbers = sortNumbers(...
php怎么将数字转成字符串?
第一种转换方式: (int) (bool) (float) (string) (array) (object)<php $num1=3.14; $num2=(string)$num1; var_dump($num1); //输出float(3.14) var_dump($num2); //输出string(3.14) ?> 输出:float 3.14string '3.14' (length=4)第二种转换方式: intval() floatval(...
php字符串处理函数(php字符串函数)
call_user_func_array('increment',?array($a));?//?You?can?use?this?instead?before?PHP?5.3 echo?$a."\n";后面可以跟多个参数!php哪个函数能取得字符串长度PHP对中文字符串的处理一直困扰于刚刚接触PHP开发的新手程序员。下面简要的剖析一下PHP对中文字符串长度的处理:PHP自带的函数如strlen...
php将字符串拆分成二维数组
php$str="123 5456 5159 6";function strsToArray($strs,$x) { // 把字符串按指定正则切割为数组$result = array(); $array = array(); //把与正则匹配的字符串替换为 @$strs = preg_replace($x, '@', trim($strs)); /* 这里切割字符串,需要注意的是如果字符串中有@ 可以...