11

我想使用空格(“”)和换行符(“\n”)作为分隔符来分解一个字符串(基于分隔符分隔并放入数组中)。

该方法(我认为这不是最好的方法)是:

  1. 用空格分解数组
  2. 从数组中重新制作字符串
  3. 再次为新线爆炸
  4. MySQL 转义单个元素。

问题:如何通过空格和换行来分解字符串?

参考:新行数组

4

4 回答 4

21

你可以做一个

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

此函数将$string在每个空格 ( \s) 出现时拆分,包括空格、制表符和换行符。多个连续的空白将计为一个(例如"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

总是从大到小。

所以先拆分"\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 回答
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 回答