ARTISA Software · pipe.php
Format texte · Séparateur de champs

Le format
PIPE (|)

Format de données textuel utilisant la barre verticale comme séparateur de champs — simple, léger, lisible par l'homme et compatible avec tous les langages.

Séparateur |
Encodage UTF-8
Extension .gapit
Type Texte
Exemple · données pays
CODE| PAYS| TÉL| EXT| CAP.
FR| France| 33| .fr| Paris
CH| Suisse| 41| .ch| Berne
DE| Allemagne| 49| .de| Berlin
JP| Japon| 81| .jp| Tokyo
01
01

Définition

Concept

Le format pipe est un format de données textuel utilisant le caractère | (barre verticale, U+007C) comme séparateur de champs. Ce caractère est peu présent dans les données courantes, ce qui limite fortement les conflits lors des imports/exports.

✓ Le caractère | n'apparaît presque jamais dans les noms, adresses ou textes courants — contrairement à la virgule ou au point-virgule.
02
02

Principe général

Structure

Un fichier pipe est :

Anatomie d'une ligne pipe
FR code
|
France pays
|
33 tél
|
.fr ext
|
Paris capitale
03
03

Comparaison avec d'autres formats

Tableau
Format Séparateur Avantages Inconvénients
CSV , Standard mondial, support universel Conflits avec les virgules dans les données
CSV FR ; Adapté aux locales francophones Moins interopérable internationalement
TAB \t Invisible, peu de conflits Moins lisible, difficile à éditer manuellement
PIPE | Très lisible, conflits rares, compact Pas de standard officiel (RFC)
JSON { } Hiérarchique, typé, standard API Plus verbeux, moins efficace pour les volumes
04
04

Structure recommandée

Format

Les champs doivent toujours apparaître dans le même ordre, avec une ligne d'en-tête décrivant chaque colonne.

exemple.gapit
ID|Nom|Prénom|Email|Actif
1|Dupont|Jean|jean@exemple.com|1
2|Martin|Claire|claire@exemple.com|0
3|Müller|Hans|hans@exemple.com|1
ℹ️ L'encodage UTF-8 sans BOM garantit la compatibilité entre systèmes Windows, Linux et macOS et permet les caractères accentués (é, ü, ñ…).
05
05

Utilisation en programmation

Multi-langages
php
// ── Parser une ligne pipe ──────────────────────
$ligne  = "FR|France|33|.fr|Paris";
$champs = explode('|', $ligne);

echo $champs[0];   // FR
echo $champs[1];   // France

// ── Parser un fichier complet ─────────────────
$lignes = file('data.gapit', FILE_IGNORE_NEW_LINES);
$header = explode('|', array_shift($lignes));

foreach ($lignes as $l) {
    $row = explode('|', $l);
    $data[] = array_combine($header, $row);
}

// ── Vérifier la cohérence ─────────────────────
if (count($row) !== count($header)) {
    throw new Exception("Nombre de colonnes incorrect");
}
javascript
// ── Parser une ligne ──────────────────────────
const ligne  = "FR|France|33|.fr|Paris";
const champs = ligne.split('|');
console.log(champs[0]);  // "FR"

// ── Parser un fichier multi-lignes ────────────
const texte = `ID|Nom|Actif
1|Alice|1
2|Bob|0`;

const [header, ...rows] = texte.split('\n');
const cols = header.split('|');

const data = rows.map(row => {
  const vals = row.split('|');
  return Object.fromEntries(cols.map((c, i) => [c, vals[i]]));
});
console.log(data);
python
# ── Parser une ligne ──────────────────────────
ligne  = "FR|France|33|.fr|Paris"
champs = ligne.split('|')
print(champs[0])   # FR

# ── Parser avec csv.reader ────────────────────
import csv

with open('data.gapit', encoding='utf-8') as f:
    reader = csv.DictReader(f, delimiter='|')
    for row in reader:
        print(row['Nom'])  # accès par nom de colonne
bash / awk
# ── Lire chaque champ avec IFS ────────────────
IFS='|' read -r code pays tel ext cap <<< "FR|France|33|.fr|Paris"
echo "$pays"   # France

# ── Parser avec awk ───────────────────────────
awk -F'|' 'NR>1 { print $2, $3 }' data.gapit

# ── Compter les colonnes de chaque ligne ──────
awk -F'|' '{ print NR": "NF" colonnes" }' data.gapit

# ── Extraire une colonne spécifique ───────────
cut -d'|' -f2 data.gapit   # 2e colonne uniquement
06
06

Bonnes pratiques & limites

Référence
📋
En-tête obligatoire
Toujours ajouter une première ligne décrivant le nom de chaque colonne.
🔢
Colonnes constantes
Vérifier que chaque ligne contient exactement le même nombre de séparateurs.
🚫
Éviter le | dans les données
Si un champ peut contenir |, l'échapper ou choisir un autre séparateur.
🔤
UTF-8 sans BOM
Garantit la compatibilité multiplateforme et la gestion des accents.
📝
Documenter le schéma
Fournir un fichier README ou un fichier schema décrivant types et contraintes.
⚠️
Pas de typage natif
Tout est texte — la conversion et la validation des types est à la charge du développeur.

Cas d'usage typiques :

exports de bases de données échanges inter-applications logs systèmes structurés traitements batch ETL migrations de données fichiers .gapit ARTISA reporting automatisé
07
07

Démo — Parser en direct

Interactif

Modifiez les données ci-dessous — le parsing se met à jour en temps réel.

live Pipe Parser interactif
// En attente…
↑