gli array divisi esplodono (9)

Cosa stai cercando di ottenere? Puoi accedere ai caratteri in una stringa come un array:

$s = "abcd"; eco $s;

stampe" UN "

Ho una riga del tipo:

e devi dividere OGNI carattere in un array.

Sicuramente ho provato:

Esplodi("", "123545789");

Ma questo mi ha dato l'ovvio: Avvertenza: nessun delimitatore specificato nell'esplosione) ..

Come posso capirlo? Non vedo alcun metodo, soprattutto solo una funzione

Provalo:

$str = "Ciao amico"; $arr1 = str_split($str); $arr2 = str_split($str, 3); stampa_r($arr1); stampa_r($arr2);

L'esempio precedente restituisce:

Array ( => H => e => l => l => o => => F => r => i => e => n => d) Array ( => Hel => lo => Ven = > fine)

$array = str_split("$stringa");

funzionerà perfettamente, ma se vuoi memorizzare caratteri speciali in quella stringa e vuoi manipolarli, QUELLA che userei

Do ( $array = mb_substr($string, 0, 1, "utf-8"); ) while ($string = mb_substr($string, 1, mb_strlen($string), "utf-8"));

perché per alcuni dei miei scopi personali si sono dimostrati più affidabili quando si verifica un problema con i caratteri speciali

Provalo:

$str = "546788"; $char_array = preg_split("//", $str, -1, PREG_SPLIT_NO_EMPTY);

str_split può fare il trucco. Tieni presente che in PHP è possibile accedere alle stringhe allo stesso modo di un array di caratteri, nella maggior parte dei casi non è necessario dividere la stringa in un "nuovo" array.

Ecco un esempio che funziona con stringhe multibyte (UTF-8).

$str = "äbcd"; // PHP 5.4.8 consente null come terzo argomento della funzione mb_strpos() do ( $arr = mb_substr($str, 0, 1, "utf-8"); ) while ($str = mb_substr($str, 1 , mb_strlen($str), "utf-8"));

Questo può essere fatto anche usando preg_split() (preg_split("//u", $str, null, PREG_SPLIT_NO_EMPTY)), ma a differenza dell'esempio sopra, che è quasi altrettanto veloce indipendentemente dalla dimensione della stringa, preg_split() è veloce con piccoli corde, ma molto più lente con quelle più grandi.

Se vuoi dividere una stringa, la soluzione migliore è utilizzare:

$array = str_split($stringa);

Quando hai un delimitatore che separa una stringa, puoi provare,

Esplodi("" ,$stringa);

Dove puoi passare il separatore nella prima variabile all'interno dell'esplosione, in questo modo:

Esplodi(",",$stringa);

$array = str_split("0123456789bcdfghjkmnpqrstvwxyz");

str_split accetta un secondo parametro opzionale, lunghezza del blocco (default 1), quindi puoi fare cose come:

$array = str_split("aabbccdd", 2); // $array = aa // $array = bb // $array = cc ecc...

Puoi anche ottenere parti della tua stringa trattandola come un array:

$stringa = "ciao"; echo $stringa; // restituisce "e"

Vorrei solo dire che ho un certo oggetto che aveva attributi variabili (era fondamentalmente una mappatura di tabella e stavo cambiando le colonne nella tabella in modo che cambiassero anche gli attributi nell'oggetto che riflette la tabella

Classe obj ( protected $fields = array("field1","field2"); protected $field1 = array(); protected $field2 = array(); protected loadfields()() // Questo caricherà $field1 e $ field2 con righe di dati per la colonna che descrivono la funzione protetta clearFields($num)( foreach($fields as $field) ( unset($this->$field[$num]); // Non ha funzionato nella riga seguente ha funzionato unset($this->($field)[$num] // Devi prima risolvere $field utilizzando () ) )

L'intero scopo $campi era solo per non dover cercare ovunque nel codice quando cambiano, guardo semplicemente all'inizio della classe e cambio l'elenco degli attributi e l'array di array $campi per riflettere i nuovi attributi.

Ci è voluto un po' di tempo per capirlo. Spero che questo possa aiutare qualcuno.

Compito
È necessario dividere la stringa in parti. Ad esempio, è necessario accedere a ciascuna delle stringhe che l'utente inserisce in un campo del modulo.

Soluzione
Se una costante stringa funge da separatore di stringa, è necessario utilizzare la funzione esplode():

$parole = esplode("","La mia frase non è molto complicata");

La funzione split() o preg_split() viene utilizzata quando è richiesta un'espressione regolare POSIX o Perl per descrivere il delimitatore:

$parole = split(" +","Questa frase contiene degli spazi extra.");
$parole = preg_split("/\d\. /","la mia giornata: 1. alzarmi 2. vestirmi 3. mangiare toast");
$righe = preg_split("/[\n\r]+/",$_REQUEST["textarea"]);

Nel caso di un delimitatore con distinzione tra maiuscole e minuscole, utilizzare la funzione spliti() o il flag /i nella funzione preg_split():

$parole = spliti(" x ","31 pollici x 22 pollici X 9 pollici");
$parole = preg_split("/ x /i","31 pollici x 22 pollici X 9 pollici");

Discussione
La soluzione più semplice sopra è usare esplodere(). Passagli un separatore di riga, la riga stessa da dividere, e come parametro opzionale un limite al numero di elementi da restituire:

$nani = "stordito, assonnato, felice, scontroso, starnutito, schivo, dottore";
$array_nani = esplode(",",$nani);

Ora la variabile $dwarf_array è un array di sette elementi:

Print_r($array_nano);
Vettore
=> stupido
=> sonnolento
=> felice
=> scontroso
=> starnuto
=> timido
=>doc
)

Se il limite indicato è inferiore al numero di parti possibili, l'ultima parte contiene tutto il resto:

$array_nani = esplode(",",$nani,5);
print_r($array_nano);
Vettore
=> stupido
=> sonnolento
=> felice
=> scontroso
=> starnutito, schivo, doc
)

La funzione esplode() tratta il separatore di riga alla lettera.

Se il separatore di riga è definito come una virgola seguita da uno spazio, questa funzione divide la riga per lo spazio che segue la virgola, anziché per la virgola o lo spazio. La funzione split() offre maggiore flessibilità. Invece di una stringa letterale come delimitatore, utilizza un'espressione regolare POSIX:

$more_dwarves = "sfacciato, grasso, ragazzo prodigio, grosso, ringhiante, intontito, ammiccante";
$more_dwarf_array = split(", ?",$more_dwarves);

Questa espressione regolare divide la stringa con una virgola seguita da uno spazio opzionale, consentendo di identificare correttamente tutti i nuovi gnomi. In questo modo gli spazi nei loro nomi non li separano, ma ogni nome è separato indipendentemente dal fatto che sia separato da una virgola "," o da una virgola con spazio ", ":

Print_r($more_dwarf_array);
Vettore
=> sfacciato
=> grassoccio
=> ragazzo prodigio
=> grosso
=> ringhiare
=> intontito
=> occhiolino
)

Esiste una funzione chiamata preg_split() che, come split(), utilizza espressioni regolari compatibili con Perl invece delle espressioni regolari POSIX.

La funzione preg_split() sfrutta le varie estensioni delle espressioni regolari di Perl, nonché trucchi intelligenti come l'inclusione del testo delimitatore nell'array di stringhe restituito:

$matematica = "3 + 2 / 7 - 9";
$stack = preg_split("/ *([+\-\/*]) */",$math,-1,PREG_SPLIT_DELIM_CAPTURE);
print_r($pila);
Vettore
=> 3
=> +
=> 2
=> /
=> 7
=> -
=> 9
)

Il delimitatore dell'espressione regolare cerca gli operatori matematici (+, -, /, *) circondati da spazi iniziali o finali opzionali. Il flag PREG_SPLIT_DELIM_CAPTURE indica a preg_split() di includere le corrispondenze come parte del delimitatore dell'espressione regolare tra virgolette nell'array di stringhe restituito. Le virgolette contengono solo simboli matematici, quindi l'array restituito non contiene spazi.

2,8K

Il metodo di esplosione PHP viene utilizzato per dividere una stringa in un numero specificato di sottostringhe.

Sintassi del metodo

Un esempio di utilizzo del metodo di esplosione PHP:

$array_name = esplode ($delimitatore, $string_to_split, $no_of_breaks)

Esempio di utilizzo dell'esplosione per dividere un numero di telefono

In questo esempio, abbiamo dichiarato una variabile stringa e le abbiamo assegnato un numero di telefono nel seguente formato:

001-234-567678

Successivamente, abbiamo utilizzato il metodo di esplosione per dividere la stringa utilizzando un trattino (trattino) come delimitatore. L'array di stringhe restituito viene assegnato all'array.

Abbiamo poi utilizzato un ciclo fogeach per visualizzare i valori degli elementi dell'array che sono sottostringhe del numero di telefono. Poiché il parametro limite non è specificato, l'intero numero di telefono verrà suddiviso in tre sottostringhe:


Visualizza demo e codice

Esempio con lo spazio come delimitatore

Questo esempio di interruzione di riga di esplosione PHP utilizza uno spazio come delimitatore. Prendiamo ad esempio questa riga:

Anche in questo caso l'esempio non utilizza il parametro limit. Dopo aver creato la stringa, abbiamo utilizzato il metodo di esplosione per dividerla. Abbiamo quindi utilizzato un ciclo fogeach per visualizzare gli elementi dell'array restituiti.

Infine, abbiamo utilizzato la funzione count() per visualizzare il numero di sottostringhe nell'array:


Visualizza demo e codice

Esempio con il parametro limite

Questo è l'esempio descritto sopra, tranne che qui abbiamo utilizzato il parametro limit per specificare il numero di divisioni per riga. Di seguito è riportata la riga utilizzata:

Questo è un tutorial sull'esplosione che abilita la suddivisione delle stringhe in PHP.

Nell'esempio di esplosione PHP, quando abbiamo utilizzato uno spazio come delimitatore, sono state restituite solo 10 sottostringhe. Questa volta sono state definite 5 suddivisioni utilizzando il parametro limite:


Visualizza demo e codice

La pagina demo mostra solo cinque sottostringhe, di cui l'ultima include il resto della stringa. Anche il numero totale di elementi dell'array è 5, non 10 come nell'esempio sopra.

A cosa serve il metodo di esplosione?

Metodo esplodere ( PHP diviso) viene utilizzato per dividere una determinata stringa. Supponiamo che un modulo Web accetti un numero di telefono con un prefisso nazionale e interurbano nel seguente formato:

001-234-567678

Dobbiamo separare il paese e il prefisso, che sono separati da un trattino. Per dividere un numero di telefono, puoi utilizzare l'esplosione con un trattino delimitatore (trattino) dopo aver accettato il numero come parametro di input.

Poiché l'esplosione restituisce un array di sottostringhe, il metodo esplode dividerà il numero nel seguente array di elementi:

  • Primo elemento = 001
  • Secondo elemento = 234
  • Terzo elemento = 567678

Come utilizzare la funzione di esplosione di PHP

Ci sono tre parametri che puoi specificare nella funzione di esplosione PHP. L'ultimo è facoltativo, poiché specifica il numero di partizioni ( numero massimo di sottostringhe) non necessario.

Descrizione di ciascun parametro:

$array_name = esplode ($delimitatore, $string_to_split, $no_of_breaks)

  • $nome_array - array; perché il metodo esplode restituisce un array di stringhe ottenuto suddividendo la stringa;
  • $delimitatore: definisce il delimitatore. Abbiamo utilizzato "-" come separatore per suddividere il numero di telefono.

Puoi anche utilizzare spazi, virgole o altre parole come delimitatore $.

  • Il parametro successivo è la stringa che deve essere divisa utilizzando il metodo di esplosione. Potrebbe essere una variabile stringa, una clausola, ecc.;
  • L'ultimo parametro specifica il numero massimo di sottostringhe o il numero di suddivisioni per riga. Questo è un parametro opzionale.

Nel PHP esplodere l'array, se l'argomento limit è positivo, l'array restituito conterrà il numero massimo di elementi, con l'ultimo elemento che conterrà il resto della stringa.

Per convertire una stringa in un array tramite delimitatore, puoi utilizzare la funzione esplode()
Parametri richiesti: delimitatore e stringa.

// Esempio 1 $pizza = "pezzo1 pezzo2 pezzo3 pezzo4 pezzo5 pezzo6"; $pezzi = esplode(" ", $pizza); echo $pezzi; // pezzo1 echo $pezzi; // pezzo2 // Esempio 2 $data = "foo:*:1023:1000::/home/foo:/bin/sh"; lista($utente, $pass, $uid, $gid, $gecos, $home, $shell) = esplode(":", $dati); echo $utente; // foo echo $passaggio; // *

Dividi la stringa in un array utilizzando l'espressione regolare

Se esplodere() non è sufficiente, puoi utilizzare una funzione più potente: preg_split(). Ti consente di dividere una stringa non in base a un set fisso di caratteri, ma in base a

Esempio dalla documentazione:

//divide la stringa con un numero arbitrario di virgole e spazi bianchi, //che includono " ", \r, \t, \n e \f $parole chiave = preg_split("/[\s,]+/", " linguaggio ipertestuale, programmazione"); print_r($parole chiave);

Risultato:

/* Array ( => ipertesto => linguaggio => programmazione) */

Converti una stringa in un array in base al numero di caratteri

La funzione str_split() converte una stringa in un array, suddividendola in elementi con un numero specificato di caratteri. Vuoi sapere come usarlo? Controlla la documentazione.

$str = "Ciao amico"; $arr2 = str_split($str, 3); print_r($arr2)

Buongiorno a tutti. Alexey Gulynin è in contatto. Nell'ultimo articolo hai imparato quali funzioni ci sono in php. In questo breve articolo vorrei parlare di due delle funzioni più comunemente utilizzate quando si programmano script in PHP. Queste sono le funzioni esplodere() E implodere(). La funzione esplode() viene utilizzata per dividere una stringa in parti e la divisione avviene in corrispondenza di un delimitatore specifico.

La funzione implode() viene utilizzata per combinare le stringhe in una sola inserendo un separatore tra di loro. La sintassi per la funzione esplode() è la seguente:

Elenco esplode (separatore di stringhe, stringa str1, limite int)

In questo caso, passiamo la stringa str1, la funzione cerca il separatore separatore in questa stringa e divide la stringa utilizzandolo. Inoltre, se viene specificato il parametro limite, la linea verrà divisa in parole limite. Per renderlo più chiaro, consideriamo questa funzione come esempio:

"; foreach ($newNames as $name) echo "$name *"; // in questo caso la riga verrà divisa in 3 parole?>

In questa funzione, la cosa principale è non confondere l'ordine degli argomenti. Secondo me sarebbe molto più conveniente se prima si passasse la stringa e poi il separatore. Inoltre, il separatore può essere non solo un singolo carattere, ma anche un'intera riga (a seconda di cosa è necessario dividere in parti separate):

In questo caso, dividiamo la stringa utilizzando il delimitatore ABC. Poiché sappiamo che ci sono 4 città sulla linea, abbiamo distribuito tutte e 4 le città in base alle variabili.

La funzione implode() funziona esattamente all'opposto della funzioneExplode(). Usiamo l'elenco delle città e concateniamolo nuovamente in un'unica riga, ma utilizzando un delimitatore diverso:

Assicurati di controllare il funzionamento di questo script.

Consiglio: si consiglia di utilizzare queste funzioni per dividere le stringhe (funzionano abbastanza velocemente), piuttosto che scrivere i propri analoghi. La regola d'oro: prima di scrivere una funzione, guarda, forse ce n'è già una nel libro di consultazione e non c'è bisogno di “reinventare la ruota”.

Compiti a casa: dopo tutto, stiamo imparando a programmare, quindi scriviamo un analogo della funzione implode(). Questa funzione prenderà un array di elenchi come primo parametro e un separatore mediante il quale gli elementi dell'array devono essere combinati in una stringa come secondo. Questa funzione deve restituire una stringa.

Qui ho abbozzato un piccolo codice, puoi dare un'occhiata. Prenditi il ​​tuo tempo per guardare il codice, prova a implementarlo tu stesso.