2012-04-17 73 views
0

我有一个textarea,我正在输入数据将其放入我需要的格式。这些数据,我输入如下所示:删除字符串中的最后一组括号

POTTERTON PUMA 80 E(SIT/HONEYWELL)(所有部分对于这个模型)
POTTERTON PUMA 80 E(SIT/HONEYWELL)(FRAME - 管道)
POTTERTON语丝KINGFISHER RS 46(对于这个模型所有部分)
POTTERTON PUMA 100 E(SIT/HONEYWELL(对于这个模型所有部分)
POTTERTON PUMA 100 E(SIT/HONEYWELL(FRAME - 管道)

有时有两个括号中有时有一个,有时候有一个未关闭的括号,然后是另一个末尾的数据,所以一旦数据被处理SED它应该是这样的:

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

所以我基本上要重复occurances除去最后括号被删除。我写的代码为大部分数据做了工作,但删除了所有的括号。

这是我的代码:

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

回答

1

更改行:

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

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

正是我需要的,谢谢M42 – 2012-04-17 15:43:22

+0

@ StuartTaylor-Jones:不客气,随时接受答案:-) – Toto 2012-04-17 16:02:52

0

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

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