我有一个导入我的php脚本的平面文件。
输出示例:
Forks [Office]
Glue [Crafts]
Jacks [Toy]
我想删除括号之间的文本,以及每行末尾的括号。
我在想“rtrim”,但字符长度不同。
也许是“爆炸”?
答案 0 :(得分:3)
使用preg_replace
$newValue = trim(preg_replace('/\\[([^\\]]*?)\\]/','',$oldValue));
解释这个正则表达式的工作原理:
[]
匹配一系列字符,因此[^\]]
匹配不是一个结束方括号的任何字符(您必须使用反斜杠来转义字符,因为[]
是一个正则表达式运算符。)*
运算符修改范围以匹配任何这些字符0次或更多次,而?
使其非贪婪(在第一次{时停止)找到{1}}。把它全部放在一个组]
里,然后你就可以找到你想要的东西。您必须进一步转义反斜杠,以便它在()
我发现这个Regex Cheat Sheet非常适合快速参考,但您应该先阅读一些关于如何使用正则表达式的文章。它是任何程序员都可以拥有的最强大的工具。
答案 1 :(得分:3)
循环到每一行,然后:
$line = substr($line, 0, strrpos($line, '['));
正则表达可能会更好
根据杰西卡的建议从strpos编辑到strrpos