Eu preciso dividir minha entrada de seqüência de caracteres em uma matriz nas vírgulas.
Como posso realizar isso?
Entrada:
9,admin@example.com,8
Eu preciso dividir minha entrada de seqüência de caracteres em uma matriz nas vírgulas.
Como posso realizar isso?
9,admin@example.com,8
Respostas:
Tente explodir :
$myString = "9,admin@example.com,8";
$myArray = explode(',', $myString);
print_r($myArray);
Resultado :
Array
(
[0] => 9
[1] => admin@example.com
[2] => 8
)
var_dump
que fornece informações mais detalhadas. Ainda mais útil é var_export($myArray, true)
porque ele retorna a saída var_dump
como uma string para que você pode armazená-lo em algum log sem quebrar site gerado ...
$myString = "9,admin@example.com,8";
$myArray = explode(',', $myString);
foreach($myArray as $my_Array){
echo $my_Array.'<br>';
}
Resultado
9
admin@example.com
8
$string = '9,admin@google.com,8';
$array = explode(',', $string);
Para situações mais complicadas, você pode precisar usar preg_split
.
Se essa string vier de um arquivo csv, eu usaria fgetcsv()
(ou str_getcsv()
se você tiver o PHP V5.3). Isso permitirá que você analise os valores entre aspas corretamente. Se não for um CSV, explode()
deve ser a melhor escolha.
Código:
$string = "9,admin@example.com,8";
$array = explode(",", $string);
print_r($array);
$no = 1;
foreach ($array as $line) {
echo $no . ". " . $line . PHP_EOL;
$no++;
};
Conectados:
body, html, iframe {
width: 100% ;
height: 100% ;
overflow: hidden ;
}
<iframe src="https://ideone.com/pGEAlb" ></iframe>
De maneira simples, você pode ir com explode($delimiter, $string)
;
Mas de uma maneira ampla, com a Programação Manual:
$string = "ab,cdefg,xyx,ht623";
$resultArr = [];
$strLength = strlen($string);
$delimiter = ',';
$j = 0;
$tmp = '';
for ($i = 0; $i < $strLength; $i++) {
if($delimiter === $string[$i]) {
$j++;
$tmp = '';
continue;
}
$tmp .= $string[$i];
$resultArr[$j] = $tmp;
}
Outpou: print_r($resultArr);
Array
(
[0] => ab
[1] => cdefg
[2] => xyx
[3] => ht623
)
A melhor opção é usar a função "explodir ()".
$content = "dad,fger,fgferf,fewf";
$delimiters =",";
$explodes = explode($delimiters, $content);
foreach($exploade as $explode) {
echo "This is a exploded String: ". $explode;
}
Se você deseja uma abordagem mais rápida, pode usar uma ferramenta de delimitador como Delimiters.co Existem muitos sites como este. Mas eu prefiro um código PHP simples.
explode
tem alguns problemas muito grandes no uso na vida real:
count(explode(',', null)); // 1 !!
explode(',', null); // [""] not an empty array, but an array with one empty string!
explode(',', ""); // [""]
explode(',', "1,"); // ["1",""] ending commas are also unsupported, kinda like IE8
é por isso que eu prefiro preg_split
preg_split('@,@', $string, NULL, PREG_SPLIT_NO_EMPTY)
todo o padrão:
/** @brief wrapper for explode
* @param string|int|array $val string will explode. '' return []. int return string in array (1 returns ['1']). array return itself. for other types - see $as_is
* @param bool $as_is false (default): bool/null return []. true: bool/null return itself.
* @param string $delimiter default ','
* @return array|mixed
*/
public static function explode($val, $as_is = false, $delimiter = ',')
{
// using preg_split (instead of explode) because it is the best way to handle ending comma and avoid empty string converted to ['']
return (is_string($val) || is_int($val)) ?
preg_split('@' . preg_quote($delimiter, '@') . '@', $val, NULL, PREG_SPLIT_NO_EMPTY)
:
($as_is ? $val : (is_array($val) ? $val : []));
}