2012-11-07 7 views
6

mam ciąg jak:Pierwsze dwa pierwsze słowa z ciągu znaków w php

$message="AB 1234 Hello, how are you? 

chcę się tak:

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

Proszę nie sugerować funkcję substr ponieważ długość pierwszych dwóch słów może się różnić, ale będą między nimi spacje. Jakieś inne sugestie?

+3

eksplodować() na przestrzeni –

+2

Proszę sprawdzić wymagania problem i ponownie – fawad

+0

widzę żadnego problemu z moją sugestią. jest to identyczny z 4 zamierzonymi odpowiedziami poniżej: –

Odpowiedz

26

Zastosowanie explode() z limitem, np

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

Jeśli potrzebujesz większej elastyczności wokół separatora tekstu, można zrobić coś podobnego z preg_split()

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

Demo - http://codepad.org/1gLJEFIa

+0

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

+1

Święty s * Nigdy nie zdawałem sobie sprawy, że istnieje parametr limit do 'wybuchu'. +100 – Ben

3

Jeśli słowa są po prostu dwa pierwsze kawałki wyznaczone przez kolejne spacji, można zrobić ...

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

Jeśli chcesz dwa pierwsze, można użyć preg_split() „s graniczną argumentu (dzięki Phil).

+0

['preg_split()'] (http://php.net/manual/en/function.preg-split.php) ma limit argów też znasz;) – Phil

+0

@Phil Robię się leniwy ... :) – alex

4

ci może korzystać z poniższej funkcji.

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

output: 
//piece1 
//piece2 

Więcej informacji: http://php.net/manual/en/function.explode.php

2

Wyjazd sscanf, należy przeczytać komentarze innych użytkownik chociaż też. Możesz znaleźć lepszy opis formatów dozwolonych pod adresem http://www.cplusplus.com/reference/clibrary/cstdio/scanf/.

<?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?" 
    } 
*/ 
Powiązane problemy