0

我有一个文本区域,我正在输入数据以将其转换为我需要的格式。我输入的数据如下所示:

POTTERTON PUMA 80 E(坐姿/霍尼韦尔)(此型号的所有部件)
POTTERTON PUMA 80 E(坐姿/霍尼韦尔)(框架 - 管道)
POTTERTON TATTLER KINGFISHER RS 46(此型号的所有部件)
POTTERTON PUMA 100 E(坐姿/霍尼韦尔) (此型号的所有部件)
POTTERTON PUMA 100 E(坐姿/霍尼韦尔(框架 - 管道)

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

POTTERTON PUMA 80 E (SIT/霍尼韦尔),POTTERTON TATTLER KINGFISHER RS 46,POTTERTON PUMA 100 E (SIT/霍尼韦尔)

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

这是我的代码:

<?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;
}
?>
4

2 回答 2

1

换行:

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

$fits = preg_replace("/\([^\)]+\)(\R|$)/","$1", $fits);
于 2012-04-17T15:38:59.673 回答
0

您可以使用基于正则表达式的搜索和替换来做到这一点:

$line = preg_replace(
    array('~(*ANYCRLF)^(.*)\s+\([^\(\)]+\)$~m', '~(*ANYCRLF)\R~'), 
    array('$1',                                 ','), 
    $block
);
于 2012-04-17T15:29:23.800 回答