php参数一个字符串数组,PHP字符串控制台参数到数组

本文探讨了在快速实现文本解析时,如何选择使用正则表达式还是编写解析器。作者提供了一个示例,展示了如何通过正则表达式处理特定格式的数据,并提到了正则表达式的局限性,以及在复杂需求下编写词法分析器和解析器的重要性。
摘要由CSDN通过智能技术生成

如果你正在构建语法树,你应该写解析器是没有问题的。但是如果您只需要解析此示例,则regex仍然可能是一个工具:

$str = 'all, ("hi there", (these, that) , other), another';

$str = preg_replace('/\, /', ',', $str); //get rid off extra spaces

/*

* get rid off undefined constants with surrounding them with quotes

*/

$str = preg_replace('/(\w+),/', '\'$1\',', $str);

$str = preg_replace('/(\w+)\)/', '\'$1\')', $str);

$str = preg_replace('/,(\w+)/', ',\'$1\'', $str);

$str = str_replace('(', 'array(', $str);

$str = 'array('.$str.');';

echo '

';

eval('$res = '.$str); //eval is evil.

print_r($res); //print the result

注意:如果输入格式不正确,正则表达式肯定会失败。我正在写这个解决方案,只是在你需要快速脚本的情况下。编写词法分析器和解析器是耗时的工作,需要大量的研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值