-1

ここに画像の説明を入力してください。下にこの形式のテキストがあり、最初の CR LF 集計をスペースに置き換える必要があります。

Contenu
    2 encarts
    12 encarts

Prepresse
    Fichier fourni

そして私は結果が欲しい:

Contenu 2 encarts
        12 encarts

Prepresse Fichier fourni
4

2 に答える 2

0

フォーマットしたいこのテキストのソースに関する詳細情報を提供できますか? ContenuPrepresse Fichierはどちらもグループの名前のようです

これらのグループのアイテムとして、 2 encarts12 encarts、およびfourniのようなアイテムがある場合

最初に、テキストがグループ名かアイテムかを検出します。テキストのソースから検出できることを願っています。2 つ目は、アイテムを正しくエコーすることです。

編集:

私は配列を使用して多くのことを行い、次のコードを使用して出力を作成しました:

$text = "Contenu\n\t2 encarts\n\t12 encarts\n\nPrepresse\n\tFichier fourni";

//divide the groups
$groups = explode("\n\n", $text);

//loop groups
foreach ($groups as $group) {

    //get group name and items
    $items = explode("\n\t", $group);

    //loop items, 
    foreach ($items as $item => $value) {
        switch ($item) {
            case 0: 
                //first item is group name
                echo $value . " ";
                //get the length of this group name to align all items using spaces
                $length = strlen($value) + 1;
                break;
            case 1: //second item is first value, what apears next to the group name
                echo $value . "<br>";
                break;
            default: // other items, where the spaces are the length of the groupname
                echo str_repeat("&nbsp;", $length) . $value . "<br>";
                break;
        }
    }

    //when an entire group is shown, leave an empty space
    echo "<br>";

}

?>

これを出力として表示します:

Contenu 2 encarts
        12 encarts

Prepresse Fichier fourni

お役に立てれば

于 2015-12-08T15:02:52.053 に答える
0

正規表現を使用すると、次のように実行できます。

<?php
$text = "Contenu\n\t2 encarts\n\t12 encarts\n\nPrepresse\n\tFichier fourni";    
echo $text."\n";    
echo preg_replace('/((^.+)(\n\t))/ime', "str_replace('$3', ' ', '$0')", $text);
?>

これの出力は次のとおりです。

Contenu
    2 encarts
    12 encarts

Prepresse
    Fichier fourni
Contenu 2 encarts
    12 encarts

Prepresse Fichier fourni
于 2015-12-08T15:22:07.720 に答える