Documentation du code de SPIP et de ses plugins

SPIP

phraser_html.php

Table of Contents

Constants

BALISE_ALT_BOUCLE  = '<//B'
Fin de la partie alternative après d'une boucle
BALISE_BOUCLE  = '<BOUCLE'
Début de la partie principale d'une boucle
BALISE_FIN_BOUCLE  = '</BOUCLE'
Fin de la partie principale d'une boucle
BALISE_IDIOMES  = ',<:(([a-z0-9_]+):)?([a-z0-9_]*)({([^\\|=>]*=[^\\|>]*)})?((\\|[^>]*)?:/?>),iS'
BALISE_IDIOMES_ARGS  = '@^\\s*([^= ]*)\\s*=\\s*((' . \NOM_DE_CHAMP . '[{][^}]*})?[^,]*)\\s*,?\\s*@s'
BALISE_INCLURE  = '/<INCLU[DR]E[[:space:]]*(\\(([^)]*)\\))?/S'
BALISE_POLYGLOTTE  = ',<multi>(.*)</multi>,Uims'
BALISE_POSTAFF_BOUCLE  = '</BB'
Fin de la partie après non optionnelle d'une boucle (toujours affichee)
BALISE_POSTCOND_BOUCLE  = '</B'
Fin de la partie optionnelle après d'une boucle
BALISE_PREAFF_BOUCLE  = '<BB'
Début de la partie avant non optionnelle d'une boucle (toujours affichee)
BALISE_PRECOND_BOUCLE  = '<B'
Début de la partie optionnelle avant d'une boucle
CHAMP_ETENDU  = '/\\[([^\\[]*?)\\(' . \NOM_DE_CHAMP . '([^)]*\\)[^]]*)\\]/S'
Balise complète [...(#TOTO) ... ]
CHAMP_SQL_PLUS_FONC  = '`?([A-Z_\\/][A-Z_\\/0-9.]*)' . \SQL_ARGS . '?`?'
Fonction SQL sur un champ ex: SUM(visites)
NOM_DE_BOUCLE  = '[0-9]+|[-_][-_.a-zA-Z0-9]*'
Expression pour trouver un identifiant de boucle
NOM_DE_CHAMP  = '#((' . \NOM_DE_BOUCLE . "):)?(([A-F]*[G-Z_][A-Z_0-9]*)|[A-Z_]+)\\b(\\*{0,2})"
Nom d'une balise #TOTO
SPEC_BOUCLE  = '/\\s*\\(\\s*([^\\s?)]+)(\\s*[^)?]*)([?]?)\\)/'
Expression pour trouver le type de boucle (TABLE autre_table ?)
SQL_ARGS  = '(\\([^)]*\\))'
Champ sql dans parenthèse ex: (id_article)
TYPE_RECURSIF  = 'boucle'
Indique un début de boucle récursive

Functions

phraser_inclure()  : array<string|int, mixed>
Parser les <INCLURE> dans le texte
phraser_polyglotte()  : array<string|int, mixed>
Phraser les <multi>...</multi> on passe en dernier de toutes les analyses : a ce stade il ne reste que des morceaux de texte entre balises/boucles, donc une <multi> ne peut pas contenir de balises
phraser_idiomes()  : array<string|int, mixed>
Repérer les balises de traduction (idiomes)
phraser_champs()  : array<string|int, mixed>
Repère et phrase les balises SPIP tel que `#NOM` dans un texte
phraser_champs_etendus()  : array<string|int, mixed>
Phraser les champs etendus
phraser_args()  : array<string|int, mixed>
Analyse les filtres d'un champ etendu et affecte le resultat renvoie la liste des lexemes d'origine augmentee de ceux trouves dans les arguments des filtres (rare) sert aussi aux arguments des includes et aux criteres de boucles Tres chevelu
phraser_arg()  : mixed
phraser_champs_exterieurs()  : array<string|int, mixed>
Reconstruire un tableau de resultat ordonné selon l'ordre d'apparition dans le texte issu de phraser_champs_interieurs() et phraser les inclure sur les morceaux intermédiaires
phraser_champs_interieurs()  : array<string|int, mixed>
Parser un texte pour trouver toutes les balises complètes `[...(#TRUC)...]` en gérant les imbrications possibles
phraser_vieux()  : void
Gerer les derogations de syntaxe historiques Ne concerne plus que #MODELE et <INCLURE> / #INCLURE
phraser_criteres()  : void
Analyse les critères de boucle
phraser_critere_infixe()  : mixed
public_compte_ligne()  : int
Compter le nombre de lignes dans une partie texte
public_trouver_premiere_boucle()  : array<string|int, mixed>|null
Trouver la boucle qui commence en premier dans un texte On repere les boucles via <BOUCLE_xxx( et ensuite on regarde son vrai debut soit <B_xxx> soit <BB_xxx>
public_trouver_fin_boucle()  : array<string|int, mixed>
Trouver la fin de la boucle (balises </B <//B </BB) en faisant attention aux boucles anonymes qui ne peuvent etre imbriquees
phraser_boucle_placeholder()  : mixed
public_generer_boucle_placeholder()  : string
Generer une balise placeholder qui prend la place de la boucle pour continuer le parsing des balises
public_phraser_html_dist()  : array<string|int, mixed>
Analyseur syntaxique des squelettes HTML SPIP On commence par analyser les boucles, les mémoriser, et les remplacer dans le texte par des placeholder qui ne genent pas la suite de l'analyse des balises et autres

Constants

BALISE_ALT_BOUCLE

Fin de la partie alternative après d'une boucle

public mixed BALISE_ALT_BOUCLE = '<//B'

BALISE_BOUCLE

Début de la partie principale d'une boucle

public mixed BALISE_BOUCLE = '<BOUCLE'

BALISE_FIN_BOUCLE

Fin de la partie principale d'une boucle

public mixed BALISE_FIN_BOUCLE = '</BOUCLE'

BALISE_IDIOMES

public mixed BALISE_IDIOMES = ',<:(([a-z0-9_]+):)?([a-z0-9_]*)({([^\\|=>]*=[^\\|>]*)})?((\\|[^>]*)?:/?>),iS'

BALISE_IDIOMES_ARGS

public mixed BALISE_IDIOMES_ARGS = '@^\\s*([^= ]*)\\s*=\\s*((' . \NOM_DE_CHAMP . '[{][^}]*})?[^,]*)\\s*,?\\s*@s'

BALISE_INCLURE

public mixed BALISE_INCLURE = '/<INCLU[DR]E[[:space:]]*(\\(([^)]*)\\))?/S'

BALISE_POSTAFF_BOUCLE

Fin de la partie après non optionnelle d'une boucle (toujours affichee)

public mixed BALISE_POSTAFF_BOUCLE = '</BB'

BALISE_POSTCOND_BOUCLE

Fin de la partie optionnelle après d'une boucle

public mixed BALISE_POSTCOND_BOUCLE = '</B'

BALISE_PREAFF_BOUCLE

Début de la partie avant non optionnelle d'une boucle (toujours affichee)

public mixed BALISE_PREAFF_BOUCLE = '<BB'

BALISE_PRECOND_BOUCLE

Début de la partie optionnelle avant d'une boucle

public mixed BALISE_PRECOND_BOUCLE = '<B'

CHAMP_ETENDU

Balise complète [...(#TOTO) ... ]

public mixed CHAMP_ETENDU = '/\\[([^\\[]*?)\\(' . \NOM_DE_CHAMP . '([^)]*\\)[^]]*)\\]/S'

CHAMP_SQL_PLUS_FONC

Fonction SQL sur un champ ex: SUM(visites)

public mixed CHAMP_SQL_PLUS_FONC = '`?([A-Z_\\/][A-Z_\\/0-9.]*)' . \SQL_ARGS . '?`?'

NOM_DE_BOUCLE

Expression pour trouver un identifiant de boucle

public mixed NOM_DE_BOUCLE = '[0-9]+|[-_][-_.a-zA-Z0-9]*'

NOM_DE_CHAMP

Nom d'une balise #TOTO

public mixed NOM_DE_CHAMP = '#((' . \NOM_DE_BOUCLE . "):)?(([A-F]*[G-Z_][A-Z_0-9]*)|[A-Z_]+)\\b(\\*{0,2})"

Écriture alambiquée pour rester compatible avec les hexadecimaux des vieux squelettes

SPEC_BOUCLE

Expression pour trouver le type de boucle (TABLE autre_table ?)

public mixed SPEC_BOUCLE = '/\\s*\\(\\s*([^\\s?)]+)(\\s*[^)?]*)([?]?)\\)/'

SQL_ARGS

Champ sql dans parenthèse ex: (id_article)

public mixed SQL_ARGS = '(\\([^)]*\\))'

TYPE_RECURSIF

Indique un début de boucle récursive

public mixed TYPE_RECURSIF = 'boucle'

Functions

phraser_inclure()

Parser les <INCLURE> dans le texte

phraser_inclure(string $texte, int $ligne, array<string|int, mixed> $result) : array<string|int, mixed>
Parameters
$texte : string
$ligne : int
$result : array<string|int, mixed>
Return values
array<string|int, mixed>

phraser_polyglotte()

Phraser les <multi>...</multi> on passe en dernier de toutes les analyses : a ce stade il ne reste que des morceaux de texte entre balises/boucles, donc une <multi> ne peut pas contenir de balises

phraser_polyglotte(string $texte, int $ligne, array<string|int, mixed> $result) : array<string|int, mixed>
Parameters
$texte : string
$ligne : int
$result : array<string|int, mixed>
Tags
use

Spip\Texte\Collecteur\Multis

used-by
phraser_champs()
Return values
array<string|int, mixed>

phraser_idiomes()

Repérer les balises de traduction (idiomes)

phraser_idiomes(string $texte, int $ligne, array<string|int, mixed> $result) : array<string|int, mixed>

Phrase les idiomes tel que

  • <:chaine:>
  • <:module:chaine:>
  • <:module:chaine{arg1=texte1,arg2=#BALISE}|filtre1{texte2,#BALISE}|filtre2:>
Parameters
$texte : string
$ligne : int
$result : array<string|int, mixed>
Tags
note

chaine peut etre vide si =texte1 est present et arg1 est vide sinon ce n'est pas un idiome

Return values
array<string|int, mixed>

phraser_champs()

Repère et phrase les balises SPIP tel que `#NOM` dans un texte

phraser_champs(string $texte, int $ligne, array<string|int, mixed> $result) : array<string|int, mixed>

Phrase également ses arguments si la balise en a (#NOM{arg, ...})

Parameters
$texte : string
$ligne : int
$result : array<string|int, mixed>
Tags
uses
phraser_polyglotte()
uses
phraser_args()
uses
phraser_vieux()
Return values
array<string|int, mixed>

phraser_champs_etendus()

Phraser les champs etendus

phraser_champs_etendus(string $texte, int $ligne, array<string|int, mixed> $result) : array<string|int, mixed>
Parameters
$texte : string
$ligne : int
$result : array<string|int, mixed>
Tags
note

C'est phraser_champs_interieurs() qui va le faire. On lui fournit un marqueur $sep qui n'est pas contenu dans le texte et qu'il peut utiliser de manière sûre pour remplacer au fur et à mesure les champs imbriquées qu'il va trouver

see
phraser_champs_interieurs()
Return values
array<string|int, mixed>

phraser_args()

Analyse les filtres d'un champ etendu et affecte le resultat renvoie la liste des lexemes d'origine augmentee de ceux trouves dans les arguments des filtres (rare) sert aussi aux arguments des includes et aux criteres de boucles Tres chevelu

phraser_args(string $texte, string $fin, string $sep, array<string|int, mixed> $result, Champ|Inclure|Idiome|Boucle &$pointeur_champ, int &$pos_debut) : array<string|int, mixed>
Parameters
$texte : string
$fin : string
$sep : string
$result : array<string|int, mixed>
$pointeur_champ : Champ|Inclure|Idiome|Boucle
$pos_debut : int
Tags
used-by
phraser_champs()
Return values
array<string|int, mixed>

phraser_arg()

phraser_arg(mixed &$texte, mixed $sep, mixed $result, mixed &$pointeur_champ) : mixed
Parameters
$texte : mixed
$sep : mixed
$result : mixed
$pointeur_champ : mixed

phraser_champs_exterieurs()

Reconstruire un tableau de resultat ordonné selon l'ordre d'apparition dans le texte issu de phraser_champs_interieurs() et phraser les inclure sur les morceaux intermédiaires

phraser_champs_exterieurs(string $texte, int $ligne, string $sep, array<string|int, mixed> $nested_res) : array<string|int, mixed>
Parameters
$texte : string
$ligne : int
$sep : string
$nested_res : array<string|int, mixed>
Return values
array<string|int, mixed>

phraser_champs_interieurs()

Parser un texte pour trouver toutes les balises complètes `[...(#TRUC)...]` en gérant les imbrications possibles

phraser_champs_interieurs(string $texte, int $no_ligne, string $sep) : array<string|int, mixed>

Pour cela on commence par les plus profondes, sans rien dedans, on les remplace par un placehoder inactif %###N@ ou N indexe un tableau comportant le resultat de leur analyse et on recommence jusqu'à ce qu'on ne trouve plus rien

Parameters
$texte : string
$no_ligne : int
$sep : string
Return values
array<string|int, mixed>

phraser_vieux()

Gerer les derogations de syntaxe historiques Ne concerne plus que #MODELE et <INCLURE> / #INCLURE

phraser_vieux(Champ|Inclure &$champ) : void
Parameters
$champ : Champ|Inclure
Tags
used-by
phraser_champs()

phraser_criteres()

Analyse les critères de boucle

phraser_criteres(array<string|int, mixed> $params, Boucle &$result) : void

Chaque paramètre de la boucle (tel que {id_article>3}) est analysé pour construire un critère (objet Critere) de boucle.

Un critère a une description plus fine que le paramètre original car on en extrait certaines informations tel que la négation et l'opérateur utilisé s'il y a.

La fonction en profite pour déclarer des modificateurs de boucles en présence de certains critères (tout, plat) ou initialiser des variables de compilation (doublons)...

Parameters
$params : array<string|int, mixed>

Tableau de description des paramètres passés à la boucle. Chaque paramètre deviendra un critère

$result : Boucle

Description de la boucle Elle sera complété de la liste de ses critères

phraser_critere_infixe()

phraser_critere_infixe(mixed $arg1, mixed $arg2, mixed $args, mixed $op, mixed $not, mixed $cond) : mixed
Parameters
$arg1 : mixed
$arg2 : mixed
$args : mixed
$op : mixed
$not : mixed
$cond : mixed

public_compte_ligne()

Compter le nombre de lignes dans une partie texte

public_compte_ligne(string $texte[, int $debut = 0 ][, int|null $fin = null ]) : int
Parameters
$texte : string
$debut : int = 0
$fin : int|null = null
Return values
int

public_trouver_premiere_boucle()

Trouver la boucle qui commence en premier dans un texte On repere les boucles via <BOUCLE_xxx( et ensuite on regarde son vrai debut soit <B_xxx> soit <BB_xxx>

public_trouver_premiere_boucle(string $texte, string $id_parent, array<string|int, mixed> $descr[, int $pos_debut_texte = 0 ]) : array<string|int, mixed>|null
Parameters
$texte : string
$id_parent : string
$descr : array<string|int, mixed>
$pos_debut_texte : int = 0
Return values
array<string|int, mixed>|null

public_trouver_fin_boucle()

Trouver la fin de la boucle (balises </B <//B </BB) en faisant attention aux boucles anonymes qui ne peuvent etre imbriquees

public_trouver_fin_boucle(string $texte, string $id_parent, array<string|int, mixed> $boucle, int $pos_debut_texte, object $result) : array<string|int, mixed>
Parameters
$texte : string
$id_parent : string
$boucle : array<string|int, mixed>
$pos_debut_texte : int
$result : object
Return values
array<string|int, mixed>

la description de la boucle dans un tableau associatif

phraser_boucle_placeholder()

phraser_boucle_placeholder(object|string &$champ[, string|null $boucle_placeholder = null ][, null|object $boucle = null ]) : mixed
Parameters
$champ : object|string
$boucle_placeholder : string|null = null
$boucle : null|object = null

public_generer_boucle_placeholder()

Generer une balise placeholder qui prend la place de la boucle pour continuer le parsing des balises

public_generer_boucle_placeholder(string $id_boucle, Boucle &$boucle, string $boucle_placeholder, int $nb_lignes) : string
Parameters
$id_boucle : string
$boucle : Boucle
$boucle_placeholder : string
$nb_lignes : int
Return values
string

public_phraser_html_dist()

Analyseur syntaxique des squelettes HTML SPIP On commence par analyser les boucles, les mémoriser, et les remplacer dans le texte par des placeholder qui ne genent pas la suite de l'analyse des balises et autres

public_phraser_html_dist(string $texte, string $id_parent, array<string, Boucle&$boucles, array<string|int, mixed> $descr[, int $ligne_debut_texte = 1 ][, string|null $boucle_placeholder = null ]) : array<string|int, mixed>
Parameters
$texte : string
$id_parent : string
$boucles : array<string, Boucle>
$descr : array<string|int, mixed>
$ligne_debut_texte : int = 1
$boucle_placeholder : string|null = null
Tags
throws
JsonException
Return values
array<string|int, mixed>

        
On this page

Search results