2012-04-17 112 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 
); 
相關問題