php

2012-11-07 15 views
6

yılında metinden ilk iki kelime alınıyor ı dize gibi varphp

$message[0] = AB 
$message[1] = 1234 
$message[2] = Hello, how are you? 

substr fonksiyonu önermek etmeyiniz ilk iki kelime uzunluğu nedeniyle değişebilir ancak aralarında boşluk olacaktır. Başka bir öneriniz var mı?

+3

() uzay –

+2

sorunu ve gereksinimleri benim önerisi ile sorun göremiyorum tekrar – fawad

+0

kontrol edin patlayabilir. –

cevap

26

bir limitli kullanın explode(), örneğin

$message = explode(' ', $message, 3); 

kelime sınırlayıcı etrafında daha fazla esneklik gerekiyorsa, preg_split()

$message = preg_split('/[\s,]+/', $message, 3) 

Demo ile benzer bir şey yapabilirsiniz - http://codepad.org/1gLJEFIa

+0

Demo - http://codepad.org/kZc2jGW9 – Phil

+1

holy s * "Patlama" için bir limit parametresi olduğunu fark etmedim. 100 – Ben

3

kelime basitçe sıralı bir boşlukla ayrılarak ilk iki parçaları iseniz, yapabileceği ...

$words = preg_split("/\s+/", $str); 

önce ikisinin istiyorsanız preg_split() 'ın sınır argüman (teşekkürler Phil kullanabilirsiniz).

+0

['preg_split()'] 'nin altında (http://php.net/manual/en/function.preg-split.php) aşağıda belirtilen 4 tanımlı cevapla aynıdır.) – Phil

+0

@Phil Tembelleşiyorum ... :) – alex

4

size aşağıdaki işlevi kullanabilir.

// Example 1 
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; 
$pieces = explode(" ", $pizza); 
echo $pieces[0]; // piece1 
echo $pieces[1]; // piece2 

output: 
//piece1 
//piece2 

fazla bilgi: http://php.net/manual/en/function.explode.php

2

Kontrol dışarı sscanf de olsa kullanıcılar tarafından gönderilen yorumları okumak için emin olun. http://www.cplusplus.com/reference/clibrary/cstdio/scanf/'da izin verilen biçimlerin daha iyi bir açıklamasını bulabilirsiniz.

<?php 
$string = 'AB 1234 Hello, how are you?'; 
$array = sscanf($string, '%s %d %[^$]'); 
var_dump($array); 
/* 
    array(3) { 
     [0]=> 
     string(2) "AB" 
     [1]=> 
     int(1234) 
     [2]=> 
     string(19) "Hello, how are you?" 
    } 
*/