我有一个导入到我的PHP脚本的平面文件。输出的如何删除PHP中括号中包含的字符串的最后部分?
实施例:
Forks [Office]
Glue [Crafts]
Jacks [Toy]
我想在每一行的末尾,以除去中的文本括号之间,以及支架本身。
我在想“rtrim”,但字符长度不同。
也许“爆炸”?
我有一个导入到我的PHP脚本的平面文件。输出的如何删除PHP中括号中包含的字符串的最后部分?
实施例:
Forks [Office]
Glue [Crafts]
Jacks [Toy]
我想在每一行的末尾,以除去中的文本括号之间,以及支架本身。
我在想“rtrim”,但字符长度不同。
也许“爆炸”?
使用preg_replace
$newValue = trim(preg_replace('/\\[([^\\]]*?)\\]/','',$oldValue));
的这个表达式是如何工作的说明:
[]
字符的范围相匹配,所以[^\]]
匹配任何字符不是右方括号(你有使用反斜杠来转义字符,因为[]
是一个正则表达式运算符。)*
运算符修改范围以匹配任何这些字符0次或更多次,并且?
使其不变贪婪(当找到第一个]
时停止)。把这一切放在一个组()
内,然后你有你想要的。你必须进一步逃避你的反斜杠,所以它在字符串内工作preg_replace
我发现这个Regex Cheat Sheet是很好的快速参考,但你应该先阅读一些关于如何使用正则表达式的文章。这是任何程序员都可以拥有的最强大的工具。
环槽每一行,然后:
$line = substr($line, 0, strrpos($line, '['));
正则表达式可能会更好从strpos到strrpos编辑
由杰西卡
只是万一[出现较早,我会使用strrpos。 http://www.php.net/manual/en/function.strrpos.php - 虽然正则表达式可以做到这一点,但这是一个更简单的解决方案,应该可以正常工作。 – Jessica
所建议甲正则表达式将看起来最简单的解决方案。 – j08691
你已经试过了什么? – BenM
@BenM'rtrim','爆炸',似乎。 = p – Katana314