Domanda

Da questa stringa:

$input = "Some terms with spaces between";

come posso produrre questo array?

$output = ['Some', 'terms', 'with', 'spaces', 'between'];
È stato utile?

Soluzione

È possibile utilizzare explode , split o preg_split .

explode utilizza una stringa fissa:

$parts = explode(' ', $string);

mentre split e preg_split usano un'espressione regolare:

$parts = split(' +', $string);
$parts = preg_split('/ +/', $string);

Un esempio in cui la suddivisione basata sull'espressione regolare è utile:

$string = 'foo   bar';  // multiple spaces
var_dump(explode(' ', $string));
var_dump(split(' +', $string));
var_dump(preg_split('/ +/', $string));

Altri suggerimenti

$parts = explode(" ", $str);
print_r(str_word_count("this is a sentence", 1));

Risultati in:

Array ( [0] => this [1] => is [2] => a [3] => sentence )

Ho solo pensato che varrebbe la pena ricordare che l'espressione regolare pubblicata da Gumbo, anche se sarà probabilmente più che sufficiente per la maggior parte, potrebbe non catturare tutti i casi di spazio bianco. Un esempio: utilizzo dell'espressione regolare nella risposta approvata nella stringa seguente:

$sentence = "Hello                       my name    is   peter string           splitter";

Mi ha fornito il seguente output tramite print_r:

Array
(
    [0] => Hello
    [1] => my
    [2] => name
    [3] => is
    [4] => peter
    [5] => string
    [6] =>      splitter
)

Where as, quando si utilizza la seguente espressione regolare:

preg_split('/\s+/', $sentence);

Mi ha fornito il seguente output (desiderato):

Array
(
    [0] => Hello
    [1] => my
    [2] => name
    [3] => is
    [4] => peter
    [5] => string
    [6] => splitter
)

Spero che aiuti chiunque sia bloccato su un ostacolo simile ed è confuso sul perché.

Solo una domanda, ma stai provando a ricavare json dai dati? In tal caso, potresti prendere in considerazione qualcosa del genere:

return json_encode(explode(' ', $inputString));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top