11

区切り文字としてスペース (" ") と改行 ("\n") の両方を使用して、(区切り文字に基づいて区切られ、配列に配置された) 文字列を分解したいと考えています。

方法(最善の方法ではないと思います)は次のとおりです。

  1. 配列をスペースで分解する
  2. 配列から文字列を作り直します
  3. 新しい行のためにそれをもう一度分解します
  4. MySQL は個々の要素をエスケープします。

質問:スペースと改行の両方で文字列を分解するにはどうすればよいですか?

参照先:改行配列

4

4 に答える 4

21

あなたはただすることができます

$segments = preg_split('/[\s]+/', $string);

この関数は、スペース、タブ、改行など、$string空白 ( ) が出現するたびに分割されます。\s複数の連続する空白は 1 つとしてカウントされます (たとえば、途中に空の文字列がなく、"hello, \n\t \n\nworld!"分割されhello,ます。world!

ここの関数リファレンスを参照してください。

于 2013-07-29T07:41:28.940 に答える
7

preg_split複数の区切り文字を使用してコンテンツを展開するために使用できます

$pattern = '/[ \n]/';
$string = "something here ; and there, oh,that's all!";
echo '<pre>', print_r( preg_split( $pattern, $string ), 1 ), '</pre>'; 
于 2013-07-29T07:39:05.890 に答える
1

複数の区切り文字を使用してコンテンツを展開するために使用できます。

サンプルコード

<?php
$str = "Brand : Pandora~ Collection : Summer 13~ Colour : Multi~ Gender : Ladies~ Material : Murano Glass~ Our Code : 0573835~ Packaging : Pandora Branded Packaging~ Product Code : 750513~ Product Type : Bead~ Style : Contemporary";
$r1 = explode("~", $str);
$stringtxt = '<table>';
if (count($r1) > 0) {
    foreach ($r1 as $value) {
        $rows = explode(":", $value);
        $stringtxt .= '<tr>';
        $stringtxt .= '<td>' . $rows[0] . '</td><td>' . $rows[1] . '</td>';
        $stringtxt .= '</tr>';
    }
}
$stringtxt .= '</table>';
print $stringtxt;
?>

出力

<table>
<tr><td>Brand </td><td> Pandora</td></tr>
<tr><td> Collection </td><td> Summer 13</td></tr>
<tr><td> Colour </td><td> Multi</td></tr>
<tr><td> Gender </td><td> Ladies</td></tr>
<tr><td> Material </td><td> Murano Glass</td></tr>
<tr><td> Our Code </td><td> 0573835</td></tr>
<tr><td> Packaging </td><td> Pandora Branded Packaging</td></tr>
<tr><td> Product Code </td><td> 750513</td></tr>
<tr><td> Product Type </td><td> Bead</td></tr>
<tr><td> Style </td><td> Contemporary</td></tr>
</table>
于 2015-05-03T13:04:29.153 に答える
1

必ず大きい方から小さい方へ。

したがって、最初に で分割し"\n"、次に で分割し" "ます。

$data = "This is a test\nAnd something new happens.";
$rows = explode("\n", $data);
$words = array();
foreach($rows as $row) {
    $temp = explode(" ", $row);
    foreach($temp as $word)
        $words[] = $word;
}

すべての単語を含む配列を提供します。

于 2013-07-29T07:38:34.143 に答える