2013-12-20 65 views
0

我有一个导入到我的PHP脚本的平面文件。输出的如何删除PHP中括号中包含的字符串的最后部分?

实施例:

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

我想在每一行的末尾,以除去中的文本括号之间,以及支架本身。

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

也许“爆炸”?

+1

所建议甲正则表达式将看起来最简单的解决方案。 – j08691

+0

你已经试过了什么? – BenM

+0

@BenM'rtrim','爆炸',似乎。 = p – Katana314

回答

3

使用preg_replace

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

的这个表达式是如何工作的说明:

[]字符的范围相匹配,所以[^\]]匹配任何字符不是右方括号(你有使用反斜杠来转义字符,因为[]是一个正则表达式运算符。)*运算符修改范围以匹配任何这些字符0次或更多次,并且?使其不变贪婪(当找到第一个]时停止)。把这一切放在一个组()内,然后你有你想要的。你必须进一步逃避你的反斜杠,所以它在字符串内工作preg_replace

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

+0

你可以在括号前加'\ s +'来删除多余的空格 – Florent

+0

如果最终产品中任何位置有空格,trim()会更好。编辑您的建议 – sjagr

3

环槽每一行,然后:

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

正则表达式可能会更好从strpos到strrpos编辑

由杰西卡

+1

只是万一[出现较早,我会使用strrpos。 http://www.php.net/manual/en/function.strrpos.php - 虽然正则表达式可以做到这一点,但这是一个更简单的解决方案,应该可以正常工作。 – Jessica

相关问题