2013-07-29 45 views
5

我想用一個空格(「」)和換行符(「\ n」)作爲分隔符來分解一個字符串(根據分隔符分隔並放入一個數組)。如何使用空格和換行符來爆炸字符串?

(我不認爲是最好的方式)的方法是:

  1. 再次爆炸由空格
  2. 翻拍該數組中的字符串
  3. 爆發,數組新線
  4. MySQL轉義個別元素。

問題:如何用空格和換行符分解字符串?

參考:new line Array

+0

您可以使用這裏可能最有效的正則表達式。另一種方式是爆炸兩次,首先是空格,然後是每個由新行字符產生的數組。最後,將所有數組合併成一個(array_merge) – Voitcus

+1

使用這個:'preg_split('/ [\ s \ n] /',$ str);' –

回答

10

爆炸的內容你可以只是做一個

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

該功能將在每一個空格(\s)發生,包括空格分割$string,標籤和換行符。多個連續的空格將計爲一個(例如"hello, \n\t \n\nworld!"將在hello,只有world!拆分,中間無空字符串。

參見功能參考here

+0

爲我工作簡單和簡短的答案。 –

0

總是從大到較小的一個。

所以首先由"\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; 
} 

會給你一個包含所有單詞的數組。

6

您可以使用preg_split使用多個分隔符

$pattern = '/[ \n]/'; 
$string = "something here ; and there, oh,that's all!"; 
echo '<pre>', print_r(preg_split($pattern, $string), 1), '</pre>'; 
+0

你應該用echo中的'.'替換'''。 –

+0

@TobiasKun它不會產生任何錯誤。看到它的語法'echo(string $ arg1 [,string $ ...])' –

+1

好吧。我不知道。 Thx爲結算! –

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>