0

必要な形式にデータを入力するためのテキストエリアがあります。入力しているデータは次のようになります。

POTTERTON PUMA 80 E(SIT / HONEYWELL)(このモデルのすべてのパーツ)
POTTERTON PUMA 80 E(SIT / HONEYWELL)(フレーム-パイプワーク)
POTTERTON TATTLER KINGFISHER RS 46(このモデルのすべてのパーツ)
POTTERTON PUMA 100 E(SIT / HONEY (このモデルのすべてのパーツ)
POTTERTON PUMA 100 E(SIT / HONEYWELL(FRAME-PIPEWORK)

ブラケットのセットが2つある場合もあれば、1つある場合もあれば、閉じていないブラケットが1つある場合もあり、最後に別のセットがある場合もあります。したがって、データが処理されると、次のようになります。

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;
}
?>
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 に答える