删除字符串中的最后一组括号

时间:2012-04-17 15:17:08

标签: php

我有一个textarea,我正在输入数据以将其放入我需要的格式。我输入的数据如下所示:

POTTERTON PUMA 80 E(SIT / HONEYWELL)(此型号的所有部件)
POTTERTON PUMA 80 E(SIT / HONEYWELL)(框架 - 管道)
POTTERTON TATTLER KINGFISHER RS 46(此型号的所有部件)
POTTERTON PUMA 100 E(SIT / HONEYWELL(此型号的所有部件)
POTTERTON PUMA 100 E(SIT / HONEYWELL(FRAME - PIPEWORK)

有时会有两组括号,有时会有一组,有时会有一个未闭合的括号,然后是另一组。因此,一旦处理完数据,它应该如下所示:

POTTERTON PUMA 80 E(SIT / HONEYWELL),POTTERTON TATTLER KINGFISHER RS 46,POTTERTON PUMA 100 E(SIT / HONEYWELL

所以我基本上希望删除重复出现并删除最后一个括号。我编写的代码完成了大部分数据的工作,但删除了所有括号。

这是我的代码:

<?php
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
?>
<form action="<?php the_permalink(); ?>" method="post">
    <textarea style="width:1000px;height:350px;" name="like"></textarea>
    <button>Submit</button>
</form>
<?php
} else {
    $fits = $_POST['like'];
    $fits = str_replace(" (","(",$fits);
    $fits = preg_replace("/\([^\)]+\)/","", $fits);
    $fits = explode("\n", str_replace("\r", "", $fits));
    $fits = array_unique($fits);
    $comma_separated = implode(', ', $fits);
    echo $comma_separated;
}
?>

2 个答案:

答案 0 :(得分:1)

更改行:

$fits = preg_replace("/\([^\)]+\)/","", $fits);

$fits = preg_replace("/\([^\)]+\)(\R|$)/","$1", $fits);

答案 1 :(得分:0)

您可以使用基于正则表达式的搜索并替换:

$line = preg_replace(
    array('~(*ANYCRLF)^(.*)\s+\([^\(\)]+\)$~m', '~(*ANYCRLF)\R~'), 
    array('$1',                                 ','), 
    $block
);