2013-07-29 17 views
5

Bir ayırıcı olarak hem bir boşluk ("") hem de bir satır ("\ n") kullanarak bir dize (bir sınırlayıcıya göre ayrılmış ve bir diziye yerleştirilmiş) patlatmak istiyorum.Dize, boşluk ve yeni satırlarla nasıl patlayabiliriz?

(Ben en iyi yolu olduğunu sanmıyorum) yöntemi şudur:

  1. yeni hatlar için tekrar boşluk
  2. Remake
  3. onu Explode diziden dize ile dizi Patlat
  4. MySQL tek tek elemanlardan kaçış.

Soru: nasıl bir boşluk ve yeni hat ikisi tarafından bir dize patladı mı?

Referans için: new line Array

+0

Burada muhtemelen en verimli olan normal ifadeleri kullanabilirsiniz. Diğer yol iki kere, önce boşluklara ve sonra her bir sonuç dizisine yeni satır karakteriyle patlamaktır. Sonunda, tüm dizileri bir taneye (array_merge) ekleyin – Voitcus

+1

Bunu kullanın: 'preg_split ('/ [\ s \ n] /', $ str);' –

cevap

10

kullanarak içerik patlamaya preg_split kullanabilirsiniz Bu fonksiyon boşluklar dahil her boşluk (\s) oluşumu en $string bölecek

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

bir, sekmeler ve satırsonları. Çoklu sıralı beyaz boşluk "hello, \n\t \n\nworld!" ortada boş dizeleri olmadan hello, ve sadece world! bölünecektir bir (ör olarak sayılacaktır.

bakınız fonksiyon referans here.

+0

benim için basit ve kısa cevap. –

0

Her zaman tek küçük daha büyük gidin.

İlk olarak "\n" tarafından bölün ve ardından " " ile bölü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; 
} 

İçindeki tüm sözcüklerle bir dizi verecek.

6

Sen tıpkı olabilecek çoklu sınırlayıcı

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

echo'nuzda ',' ile '.' ile değiştirmelisiniz. –

+0

@TobiasKun Herhangi bir hata oluşturmayacaktır. Onun sözdizimi 'echo (string $ arg1 [, string $ ...])' –

+1

Ah iyi bakın. Bunu bilmiyordum. Takas için teşekkürler! –

1
Birden sınırlayıcı kullanarak içeriği patlamaya kullanabilirsiniz

.

Örnek kod

<?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; 
?> 

Çıktı

<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> 
İlgili konular