10

これは私のファイルです:

0.0 5.0 5.0 6.0 7.0 2.0 5.0 2.0 1.0 5.0 5.0 1.0 2.0 7.1 5.0
5.0 0.0 5.0 5.0 5.0 2.0 5.0 1.0 5.0 6.0 6.0 6.0 6.0 1.0 7.1
5.0 5.0 0.0 6.0 1.0 6.0 5.0 5.0 1.0 6.0 5.0 7.0 1.0 5.0 6.0
6.0 5.0 6.0 0.0 5.0 2.0 1.0 6.0 5.0 6.0 2.0 1.0 2.0 1.0 5.0
7.0 5.0 1.0 5.0 0.0 7.0 1.0 1.0 2.0 1.0 5.0 6.0 2.0 2.0 5.0
2.0 2.0 6.0 2.0 7.0 0.0 5.0 5.0 6.0 5.0 2.0 5.0 1.0 2.0 5.0
5.0 5.0 5.0 1.0 1.0 5.0 0.0 2.0 6.0 1.0 5.0 7.0 5.0 1.0 6.0
7.0 1.0 5.0 1.0 2.0 2.0 1.0 5.0 6.0 5.0 2.0 6.0 7.0 0.0 5.0
5.0 7.0 6.0 5.0 5.0 5.0 6.0 2.0 6.0 2.0 1.0 5.0 6.0 5.0 0.0

\n で分割し、各行に 1 つの配列を返します。どうすれば正規表現を行うことができますか?

$rows = preg_split('$regular_expression', $content);

すべての行を抽出した後、バックスペースで区切られた各値を抽出するにはどうすればよいですか?

$values_in_a_row = preg_split('$regular_expression', $a_row);

ここでのテキストは、 http://regexr.com?2v23cを実行しようとしています。

4

5 に答える 5

40

各改行が正しいかどうかわからないために問題が発生している場合、または\n上記の回答のいずれも機能せず、正規表現が機能します。私がしたことは\r\n\r

$lines = preg_split("/(\r\n|\n|\r)/",$content);

次に、受け入れられた回答を使用してスペースを分割できます。

于 2016-04-25T21:20:30.720 に答える
7

正規表現は必要ありません。

<?php
    $data = explode("\n", $data); // preg_split('#\n#', $data); Please don't
    foreach($data as &$row) {
        $row = explode(' ', $row); // preg_split('#\s#', $row); Seriously
    }
    print_r($data);
?>

<test></test>
于 2011-10-28T10:48:37.570 に答える
6
$rowsapart = preg_split("/\n/",$rowstogether);

$colspart = preg_split("/\s/",$colstogether);
于 2011-10-28T10:48:06.670 に答える
2

REGEX は必要ありませんexplode()。代わりに次を使用します。

<?php

    $file = <<<EOF
    0.0 5.0 5.0 6.0 7.0 2.0 5.0 2.0 1.0 5.0 5.0 1.0 2.0 7.1 5.0
    5.0 0.0 5.0 5.0 5.0 2.0 5.0 1.0 5.0 6.0 6.0 6.0 6.0 1.0 7.1
    5.0 5.0 0.0 6.0 1.0 6.0 5.0 5.0 1.0 6.0 5.0 7.0 1.0 5.0 6.0
    6.0 5.0 6.0 0.0 5.0 2.0 1.0 6.0 5.0 6.0 2.0 1.0 2.0 1.0 5.0
    7.0 5.0 1.0 5.0 0.0 7.0 1.0 1.0 2.0 1.0 5.0 6.0 2.0 2.0 5.0
    2.0 2.0 6.0 2.0 7.0 0.0 5.0 5.0 6.0 5.0 2.0 5.0 1.0 2.0 5.0
    5.0 5.0 5.0 1.0 1.0 5.0 0.0 2.0 6.0 1.0 5.0 7.0 5.0 1.0 6.0
    7.0 1.0 5.0 1.0 2.0 2.0 1.0 5.0 6.0 5.0 2.0 6.0 7.0 0.0 5.0
    5.0 7.0 6.0 5.0 5.0 5.0 6.0 2.0 6.0 2.0 1.0 5.0 6.0 5.0 0.0
    EOF;

    $rows = explode("\n", $file);
    print_r($rows);
    echo "\n\n"; //Spacing

    $numbers_in_a_row = explode(" ", $rows[0]);
    print_r($numbers_in_a_row);

?>

実際の例

于 2011-10-28T10:50:08.583 に答える
0
preg_split("/\R/", $content); 

入力コンテンツが Unicode 形式であることが確実な場合は、テキストを新しい行で分割する最も信頼できる方法です。

/\R/ASCII 範囲内の任意の Unicode 改行シーケンスに一致します。それは同等です

/(?>\r\n|\n|\r|\f|\x0b|\x85)/
于 2021-07-25T20:35:06.923 に答える