我想使用空格(“”)和换行符(“\n”)作为分隔符来分解一个字符串(基于分隔符分隔并放入数组中)。
该方法(我认为这不是最好的方法)是:
- 用空格分解数组
- 从数组中重新制作字符串
- 再次为新线爆炸
- MySQL 转义单个元素。
问题:如何通过空格和换行来分解字符串?
参考:新行数组
你可以做一个
$segments = preg_split('/[\s]+/', $string);
此函数将$string
在每个空格 ( \s
) 出现时拆分,包括空格、制表符和换行符。多个连续的空白将计为一个(例如"hello, \n\t \n\nworld!"
,将被拆分为仅hello,
,world!
中间没有空字符串。
请参阅此处的函数参考。
您可以使用preg_split
多个分隔符来分解内容
$pattern = '/[ \n]/';
$string = "something here ; and there, oh,that's all!";
echo '<pre>', print_r( preg_split( $pattern, $string ), 1 ), '</pre>';
总是从大到小。
所以先拆分"\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;
}
会给你一个包含所有单词的数组。
您可以使用多个分隔符来分解内容。
示例代码
<?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>