你如何删除PHP中括号中包含的字符串的最后一部分?

时间:2013-12-20 16:54:31

标签: php

我有一个导入我的php脚本的平面文件。

输出示例:

Forks [Office]
Glue [Crafts]
Jacks [Toy]

我想删除括号之间的文本,以及每行末尾的括号。

我在想“rtrim”,但字符长度不同。

也许是“爆炸”?

2 个答案:

答案 0 :(得分:3)

使用preg_replace

$newValue = trim(preg_replace('/\\[([^\\]]*?)\\]/','',$oldValue));

解释这个正则表达式的工作原理:

[]匹配一系列字符,因此[^\]]匹配不是一个结束方括号的任何字符(您必须使用反斜杠来转义字符,因为[]是一个正则表达式运算符。)*运算符修改范围以匹配任何这些字符0次或更多次,而?使其非贪婪(在第一次{时停止)找到{1}}。把它全部放在一个组]里,然后你就可以找到你想要的东西。您必须进一步转义反斜杠,以便它在()

的字符串内部工作

我发现这个Regex Cheat Sheet非常适合快速参考,但您应该先阅读一些关于如何使用正则表达式的文章。它是任何程序员都可以拥有的最强大的工具。

答案 1 :(得分:3)

循环到每一行,然后:

$line = substr($line, 0, strrpos($line, '['));

正则表达可能会更好

根据杰西卡的建议从strpos编辑到strrpos