Je veux analyser une chaîne de valeur séparée par des virgules dans une matrice. Je veux essayer la fonction Par exemple, j'ai une entrée dans laquelle les utilisateurs soumettent des balises pour les langages de programmation (PHP, JS, JQuery, etc.), comme l'entrée "Tags" dans Stackoverflow lorsque vous soumettez une question. P>
Comment puis-je transformer une entrée avec exemple str_getcsv () code> PHP, mais je ne trouve aucun bien exemples sur la façon de l'utiliser. p>
valeur = "php, js, jQuery" code> dans un tableau à l'aide de str_gecsv? p>
5 Réponses :
C'est vrai que la spécification à http: //us3.php. net / manuel / fr / fonction.str-getcsv.php n'inclut pas d'exemple standard, mais les notes soumises par l'utilisateur font un travail décent de la revêtement. S'il s'agit d'une entrée de formulaire: $ données code> est maintenant un tableau avec les valeurs. Essayez-le et voyez si vous avez d'autres problèmes. P> p>
Je pense que vous devriez peut-être regarder exploser pour cette tâche .
$values = "php, js, jquery";
$items = explode(",", $values);
// Would give you an array:
echo $items[0]; // would be php
echo $items[1]; // would be js
echo $items[2]; // would be jquery
Merci +1 par exemple. Exploser est une bonne fonction mais str_getcsv semble couper le blanc automatiquement. Je suis dans un dilemme entre le 2.
Pour la simplicité et la lisibilité, je me trouve généralement en utilisant simplement exploser (), seulement l'ajout dans str_getcsv () si les deux conditions suivantes sont remplies: 1) Le délimiteur principal est également utilisé dans les données elles-mêmes; 2) Le jeton que j'essaie d'utiliser car le délimiteur principal est joint à un autre caractère distinct.
Par exemple, un analyseur de base pour un fichier CSV: p> Cependant, souvent, les données contiendront le délimiteur, à quel point un jeton entourant (A "dans cet exemple) doit être présent. Si oui, je passe à STR_GETCSV () comme: P> foreach ($AccountsArray as $entry) {
$acctArr = str_getcsv($entry, ",", "\"");
}
Merci pour le partage! C'est bon lors de l'obtention de données d'un fichier.
Je pense que cela devrait être la réponse acceptée. Il est clair et montre comment utiliser str_getcsv () à la place de l'explosion () qui est ce que j'utilisais.
//get the csv
$csvFile = file_get_contents('test.csv');
//separate each line
$csv = explode("\n",$csvFile);
foreach ($csv as $csvLine) {
//separet each fields
$linkToInsert = explode(",",$csvLine);
//echo what you need
//$linkToInsert[0] would be the first field, $linkToInsert[1] second field, etc
echo '⢠' . $linkToInsert[1] . '<br>';
}
Cela ne fonctionnera généralement pas. Et si un champ comprend une nouvelle ligne? ou une virgule?
Dans ce cas, je pense que vous pouvez "filtrer" ou retirer les nouvelles lignes et tout autre chose que vous ne voulez pas avec une stratégie Str_replace juste avant l'explosion.
Exemple: "Champ 1", "champ 2", "champ avec une virgule", "champ 4" supprimez-vous la virgule à l'intérieur du champ 3? Comment? Et peut-être que la virgule était ici pour une raison?
Dans ce cas, cela dépendrait de la création de la création de fichiers CSV. Normalement, lorsque je crée un fichier CSV, je choisis un délimiteur de champ comme un "-> afin de donner" champ 1 "," champ 2 ", etc ... si ce n'est pas un fichier CSV, pourquoi vous utilisez une fonction STR_GETCSV ()?
CSV signifie "valeur séparée par des virgules" et de nombreuses applications peuvent lire ou écrire le format. WIWSV ("Tout ce que je veux des valeurs séparées") est parfaitement correct pour certaines utilisations, mais vous ne pourrez pas la lire ou l'écrire avec, par exemple, Excel.
Le code est assez simple, à l'aide de la fonction Remarque: les fonctions utilisées sont compatibles avec des versions de PHP> = 5.3.0 P> str_getcsv code>, nous irons
à travers chaque ligne du fichier CSV "images.csv" située dans le
Même répertoire que notre script. //First, reading the CSV file
$csvFile = file('file.csv');
foreach ($csvFile as $line) {
$url = str_getcsv($line);
$ch = curl_init($url[0]);
$name = basename($url[0]);
if (!file_exists('directory/' . $name)) {
$fp = fopen('directory/' . $name, 'wb');
}
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
}
Pourquoi n'utilisez-vous pas simplement une fonction d'explosion?
Peut-être que je me suis trompé, mais
$ myarray = str_getcsv (valeur $); code> devrait faire?@Heximal: Où serait l'avantage de le faire?
@heximal, je suppose que Str_gecsv est plus idéal pour mon cas puisqu'il est pour le CSV
@Heximal: exploser ne prendra pas en compte le texte avec une virgule contenue avec des parenthèses.