diff --git a/ecrire/inc/bandeau.php b/ecrire/inc/bandeau.php
index 4c3a5b3b9cf5474c677493c1816474d72baf4bd0..982980a4476e050c23e69ea1bf7f850398e15370 100644
--- a/ecrire/inc/bandeau.php
+++ b/ecrire/inc/bandeau.php
@@ -43,15 +43,15 @@ function definir_barre_contexte($contexte = null) {
 	} elseif (is_string($contexte)) {
 		$contexte = unserialize($contexte);
 	}
-	if (!isset($contexte['id_rubrique']) and isset($contexte['exec'])) {
+	if (!isset($contexte['id_rubrique']) && isset($contexte['exec'])) {
 		if (!function_exists('trouver_objet_exec')) {
 			include_spip('inc/pipelines_ecrire');
 		}
 		if ($e = trouver_objet_exec($contexte['exec'])) {
 			$_id = $e['id_table_objet'];
-			if (isset($contexte[$_id]) and $id = intval($contexte[$_id])) {
+			if (isset($contexte[$_id]) && ($id = (int) $contexte[$_id])) {
 				$table = $e['table_objet_sql'];
-				$row = sql_fetsel('*', $table, "$_id=" . intval($id));
+				$row = sql_fetsel('*', $table, "$_id=" . (int) $id);
 				if (isset($row['id_rubrique'])) {
 					$contexte['id_rubrique'] = $row['id_rubrique'];
 					if (isset($row['id_secteur'])) {
@@ -89,7 +89,7 @@ function definir_barre_boutons($contexte = [], $icones = true, $autorise = true)
 	// ajouter les boutons issus des plugin via paquet.xml
 	if (
 		function_exists('boutons_plugins')
-		and is_array($liste_boutons_plugins = boutons_plugins())
+		&& is_array($liste_boutons_plugins = boutons_plugins())
 	) {
 		$liste_boutons = &$liste_boutons_plugins;
 	}
@@ -99,26 +99,26 @@ function definir_barre_boutons($contexte = [], $icones = true, $autorise = true)
 		// les boutons principaux ne sont pas soumis a autorisation
 		if (
 			!isset($infos['parent'])
-			or !($parent = $infos['parent'])
-			or !$autorise
-			or autoriser('menu', "_$id", 0, null, ['contexte' => $contexte])
+			|| !($parent = $infos['parent'])
+			|| !$autorise
+			|| autoriser('menu', "_$id", 0, null, ['contexte' => $contexte])
 		) {
 			if (
 				$parent
-				and $parent = preg_replace(',^bando_,', 'menu_', $parent)
-				and isset($boutons_admin[$parent])
+				&& ($parent = preg_replace(',^bando_,', 'menu_', $parent))
+				&& isset($boutons_admin[$parent])
 			) {
-				$position = (isset($infos['position']) and strlen($infos['position'])) ? intval($infos['position']) : count($boutons_admin[$parent]->sousmenu);
+				$position = (isset($infos['position']) && strlen($infos['position'])) ? (int) $infos['position'] : count($boutons_admin[$parent]->sousmenu);
 				if ($position < 0) {
 					$position = count($boutons_admin[$parent]->sousmenu) + 1 + $position;
 				}
 				$boutons_admin[$parent]->sousmenu = array_slice($boutons_admin[$parent]->sousmenu, 0, $position)
 					+ [
 						$id => new Bouton(
-							($icones and !empty($infos['icone'])) ? find_in_theme($infos['icone']) : '',  // icone
+							($icones && !empty($infos['icone'])) ? find_in_theme($infos['icone']) : '',  // icone
 							$infos['titre'],  // titre
-							(isset($infos['action']) and $infos['action']) ? $infos['action'] : null,
-							(isset($infos['parametres']) and $infos['parametres']) ? $infos['parametres'] : null
+							(isset($infos['action']) && $infos['action']) ? $infos['action'] : null,
+							(isset($infos['parametres']) && $infos['parametres']) ? $infos['parametres'] : null
 						)
 					]
 					+ array_slice($boutons_admin[$parent]->sousmenu, $position, 100);
@@ -126,17 +126,17 @@ function definir_barre_boutons($contexte = [], $icones = true, $autorise = true)
 			if (
 				!$parent
 				// provisoire, eviter les vieux boutons
-				and (!in_array($id, ['forum', 'statistiques_visites']))
-				and (!$autorise or autoriser('menugrandeentree', "_$id", 0, null, ['contexte' => $contexte]))
+				&& !in_array($id, ['forum', 'statistiques_visites'])
+				&& (!$autorise || autoriser('menugrandeentree', "_$id", 0, null, ['contexte' => $contexte]))
 			) {
-				$position = (isset($infos['position']) and $infos['position']) ? $infos['position'] : count($boutons_admin);
+				$position = (isset($infos['position']) && $infos['position']) ? $infos['position'] : count($boutons_admin);
 				$boutons_admin = array_slice($boutons_admin, 0, $position)
 					+ [
 						$id => new Bouton(
-							($icones and isset($infos['icone']) and $infos['icone']) ? find_in_theme($infos['icone']) : '',  // icone
+							($icones && isset($infos['icone']) && $infos['icone']) ? find_in_theme($infos['icone']) : '',  // icone
 							$infos['titre'],  // titre
-							(isset($infos['action']) and $infos['action']) ? $infos['action'] : null,
-							(isset($infos['parametres']) and $infos['parametres']) ? $infos['parametres'] : null
+							(isset($infos['action']) && $infos['action']) ? $infos['action'] : null,
+							(isset($infos['parametres']) && $infos['parametres']) ? $infos['parametres'] : null
 						)
 					]
 					+ array_slice($boutons_admin, $position, 100);
@@ -220,8 +220,8 @@ function bandeau_creer_url($url, $args = '', $contexte = null) {
 		// @machin@ etant remplace par _request('machin')
 		$url = str_replace('&amp;', '&', $url);
 		while (preg_match(',[&?]([a-z_]+)=@([a-z_]+)@,i', $url, $matches)) {
-			if ($matches[2] == 'id_secteur' and !isset($contexte['id_secteur']) and isset($contexte['id_rubrique'])) {
-				$contexte['id_secteur'] = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique=' . intval($contexte['id_rubrique']));
+			if ($matches[2] == 'id_secteur' && !isset($contexte['id_secteur']) && isset($contexte['id_rubrique'])) {
+				$contexte['id_secteur'] = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique=' . (int) $contexte['id_rubrique']);
 			}
 			$val = _request($matches[2], $contexte);
 			$url = parametre_url($url, $matches[1], $val ?: '', '&');
@@ -250,8 +250,8 @@ function inc_bandeau_dist() {
 function obtenir_menus_favoris() {
 	if (
 		isset($GLOBALS['visiteur_session']['prefs']['menus_favoris'])
-		and is_array($GLOBALS['visiteur_session']['prefs']['menus_favoris'])
-		and $GLOBALS['visiteur_session']['prefs']['menus_favoris']
+		&& is_array($GLOBALS['visiteur_session']['prefs']['menus_favoris'])
+		&& $GLOBALS['visiteur_session']['prefs']['menus_favoris']
 	) {
 		return $GLOBALS['visiteur_session']['prefs']['menus_favoris'];
 	}
diff --git a/ecrire/inc/chercher_rubrique.php b/ecrire/inc/chercher_rubrique.php
index 7d4070c03f29f00cc5eea50f89e180611c6c36ee..7b4ea69eeab43a4dcb49f22aed1abae4ab71edac 100644
--- a/ecrire/inc/chercher_rubrique.php
+++ b/ecrire/inc/chercher_rubrique.php
@@ -63,8 +63,8 @@ function inc_chercher_rubrique_dist($id_rubrique, $type, $restreint, $idem = 0,
 	// - soit parce qu'il y a peu de rubriques
 	if (
 		_SPIP_AJAX < 1
-		or $type == 'breve'
-		or sql_countsel('spip_rubriques') < _SPIP_SELECT_RUBRIQUES
+		|| $type == 'breve'
+		|| sql_countsel('spip_rubriques') < _SPIP_SELECT_RUBRIQUES
 	) {
 		return selecteur_rubrique_html($id_rubrique, $type, $restreint, $idem);
 	} else {
@@ -123,10 +123,7 @@ function sous_menu_rubriques($id_rubrique, $root, $niv, &$data, &$enfants, $excl
 	static $decalage_secteur;
 
 	// Si on a demande l'exclusion ne pas descendre dans la rubrique courante
-	if (
-		$exclus > 0
-		and $root == $exclus
-	) {
+	if ($exclus > 0 && $root == $exclus) {
 		return '';
 	}
 
@@ -168,7 +165,7 @@ function sous_menu_rubriques($id_rubrique, $root, $niv, &$data, &$enfants, $excl
 	}
 
 	// si l'objet a deplacer est publie, verifier qu'on a acces aux rubriques
-	if ($restreint and $root != $id_rubrique and !autoriser('publierdans', 'rubrique', $root)) {
+	if ($restreint && $root != $id_rubrique && !autoriser('publierdans', 'rubrique', $root)) {
 		return $sous;
 	}
 
@@ -196,13 +193,13 @@ function sous_menu_rubriques($id_rubrique, $root, $niv, &$data, &$enfants, $excl
 function selecteur_rubrique_html($id_rubrique, $type, $restreint, $idem = 0) {
 	$enfants = [];
 	$data = [];
-	if ($type == 'rubrique' and autoriser('publierdans', 'rubrique', 0)) {
+	if ($type == 'rubrique' && autoriser('publierdans', 'rubrique', 0)) {
 		$data[0] = _T('info_racine_site');
 	}
 	# premier choix = neant
 	# si auteur (rubriques restreintes)
 	# ou si creation avec id_rubrique=0
-	elseif ($type == 'auteur' or !$id_rubrique) {
+	elseif ($type == 'auteur' || !$id_rubrique) {
 		$data[0] = '&nbsp;';
 	}
 
@@ -224,7 +221,7 @@ function selecteur_rubrique_html($id_rubrique, $type, $restreint, $idem = 0) {
 			$titre = couper(supprimer_tags(typo($r['titre'])) . ' ', 50);
 			if (
 				$GLOBALS['meta']['multi_rubriques'] == 'oui'
-				and ($r['langue_choisie'] == 'oui' or $r['id_parent'] == 0)
+				&& ($r['langue_choisie'] == 'oui' || $r['id_parent'] == 0)
 			) {
 				$titre .= ' [' . traduire_nom_langue($r['lang']) . ']';
 			}
@@ -241,9 +238,9 @@ function selecteur_rubrique_html($id_rubrique, $type, $restreint, $idem = 0) {
 	// sauf si le selecteur s'adresse a une rubrique puisque on peut la mettre a la racine dans ce cas
 	if (
 		count($data) == 2
-		and isset($data[0])
-		and !in_array($type, ['auteur', 'rubrique'])
-		and !$id_rubrique
+		&& isset($data[0])
+		&& !in_array($type, ['auteur', 'rubrique'])
+		&& !$id_rubrique
 	) {
 		unset($data[0]);
 	}
@@ -297,20 +294,16 @@ function selecteur_rubrique_html($id_rubrique, $type, $restreint, $idem = 0) {
 function selecteur_rubrique_ajax($id_rubrique, $type, $restreint, $idem = 0, $do = 'aff') {
 
 	if ($id_rubrique) {
-		$titre = sql_getfetsel('titre', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique));
+		$titre = sql_getfetsel('titre', 'spip_rubriques', 'id_rubrique=' . (int) $id_rubrique);
 	} else {
-		if ($type == 'auteur') {
-			$titre = '&nbsp;';
-		} else {
-			$titre = _T('info_racine_site');
-		}
+		$titre = $type == 'auteur' ? '&nbsp;' : _T('info_racine_site');
 	}
 
 	$titre = str_replace('&amp;', '&', entites_html(textebrut(typo($titre))));
 	$init = " disabled='disabled' type='text' value=\"" . $titre . "\"\nstyle='width:300px;'";
 
 	$url = generer_url_ecrire('selectionner', "id=$id_rubrique&type=$type&do=$do"
-		. (!$idem ? '' : "&exclus=$idem")
+		. ($idem ? "&exclus=$idem" : '')
 		. ($restreint ? '' : '&racine=oui')
 		. (isset($GLOBALS['var_profile']) ? '&var_profile=1' : ''));
 
@@ -345,7 +338,7 @@ function selecteur_rubrique_ajax($id_rubrique, $type, $restreint, $idem = 0, $do
  *     Code HTML du sélecteur de rubrique AJAX
  **/
 function construire_selecteur($url, $js, $idom, $name, $init = '', $id = 0) {
-	$icone = (strpos($idom, 'auteur') !== false) ? 'auteur-24.png' : 'rechercher-20.png';
+	$icone = (str_contains($idom, 'auteur')) ? 'auteur-24.png' : 'rechercher-20.png';
 	// si icone de recherche on embed le svg
 	$balise = ($icone === 'rechercher-20.png' ? chercher_filtre('balise_svg') : chercher_filtre('balise_img'));
 	$img_icone = $balise(chemin_image($icone), _T('titre_image_selecteur'));
diff --git a/ecrire/inc/commencer_page.php b/ecrire/inc/commencer_page.php
index 516f13e3a7b3bdcdbca718e7e961a83a8c6811b8..fc4a20caa9809cc5f23a7ef521226961d28e36fe 100644
--- a/ecrire/inc/commencer_page.php
+++ b/ecrire/inc/commencer_page.php
@@ -166,10 +166,10 @@ function init_body_class() {
 
 	$prefs = $GLOBALS['visiteur_session']['prefs'] ?? [];
 
-	$display_mode = $display_modes[intval($prefs['display'] ?? 0)] ?? $display_modes[0];
+	$display_mode = $display_modes[(int) ($prefs['display'] ?? 0)] ?? $display_modes[0];
 	$spip_display_navigation = isset($prefs['display_navigation']) ? spip_sanitize_classname($prefs['display_navigation']) : 'navigation_avec_icones';
 
-	$couleur = intval($prefs['couleur'] ?? 2);
+	$couleur = (int) ($prefs['couleur'] ?? 2);
 
 	$classes = "spip-theme-colors-$couleur $spip_display_navigation $display_mode";
 	return spip_sanitize_classname($classes);
diff --git a/ecrire/inc/completer_traduction.php b/ecrire/inc/completer_traduction.php
index 230aaa66144667e1d1d1bfb1b8409e6ef9b86816..c50574853d86d8c7d42fb06b903552c8d2feea7f 100644
--- a/ecrire/inc/completer_traduction.php
+++ b/ecrire/inc/completer_traduction.php
@@ -39,7 +39,7 @@ function inc_completer_traduction_dist($objet, $id_objet, $id_trad) {
 	include_spip('action/editer_logo');
 	foreach (['on', 'off'] as $etat) {
 		$logo = $chercher_logo($id_trad, $_id_table, $etat);
-		if ($logo and $file = reset($logo)) {
+		if ($logo && ($file = reset($logo))) {
 			logo_modifier($objet, $id_objet, $etat, $file);
 		}
 	}
@@ -54,7 +54,7 @@ function inc_completer_traduction_dist($objet, $id_objet, $id_trad) {
 		$champs[] = 'virtuel';
 	}
 
-	$data = sql_fetsel('*', $desc['table'], $_id_table . '=' . intval($id_trad));
+	$data = sql_fetsel('*', $desc['table'], $_id_table . '=' . (int) $id_trad);
 
 	foreach ($champs as $c) {
 		$set[$c] = $data[$c];
diff --git a/ecrire/inc/cookie.php b/ecrire/inc/cookie.php
index 2f9f5ef716a2d7f9cfad9669a032347469697f30..194e3d838338f006cd8e6734ed8a472d90886eba 100644
--- a/ecrire/inc/cookie.php
+++ b/ecrire/inc/cookie.php
@@ -52,7 +52,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
  **/
 function spip_setcookie($name = '', $value = '', $options = []) {
 	static $to_secure_list = ['spip_session'];
-	if (defined('_COOKIE_SECURE_LIST') and is_array(_COOKIE_SECURE_LIST)) {
+	if (defined('_COOKIE_SECURE_LIST') && is_array(_COOKIE_SECURE_LIST)) {
 		$to_secure_list = array_merge($to_secure_list, _COOKIE_SECURE_LIST);
 	}
 
@@ -80,18 +80,14 @@ function spip_setcookie($name = '', $value = '', $options = []) {
 	if (!isset($options['expires'])) {
 		$options['expires'] = 0;
 	}
-	if (!isset($options['path']) or $options['path'] === 'AUTO') {
-		if (defined('_COOKIE_PATH')) {
-			$options['path'] = _COOKIE_PATH;
-		} else {
-			$options['path'] = preg_replace(',^\w+://[^/]*,', '', url_de_base());
-		}
+	if (!isset($options['path']) || $options['path'] === 'AUTO') {
+		$options['path'] = defined('_COOKIE_PATH') ? _COOKIE_PATH : preg_replace(',^\w+://[^/]*,', '', url_de_base());
 	}
-	if (empty($options['domain']) and defined('_COOKIE_DOMAIN') and _COOKIE_DOMAIN) {
+	if (empty($options['domain']) && defined('_COOKIE_DOMAIN') && _COOKIE_DOMAIN) {
 		$options['domain'] = _COOKIE_DOMAIN;
 	}
 	if (in_array($name, $to_secure_list)) {
-		if (empty($options['secure']) and defined('_COOKIE_SECURE') and _COOKIE_SECURE) {
+		if (empty($options['secure']) && defined('_COOKIE_SECURE') && _COOKIE_SECURE) {
 			$options['secure'] = true;
 		}
 		if (empty($options['httponly'])) {
@@ -103,7 +99,7 @@ function spip_setcookie($name = '', $value = '', $options = []) {
 	}
 
 	// in fine renommer le prefixe si besoin
-	if (strpos($name, 'spip_') === 0) {
+	if (str_starts_with($name, 'spip_')) {
 		$name = $GLOBALS['cookie_prefix'] . '_' . substr($name, 5);
 	}
 
@@ -154,8 +150,8 @@ function spip_cookie_envoye($set = '') {
 function recuperer_cookies_spip($cookie_prefix) {
 	$prefix_long = strlen($cookie_prefix);
 
-	foreach ($_COOKIE as $name => $value) {
-		if (substr($name, 0, 5) == 'spip_' && substr($name, 0, $prefix_long) != $cookie_prefix) {
+	foreach (array_keys($_COOKIE) as $name) {
+		if (str_starts_with($name, 'spip_') && substr($name, 0, $prefix_long) != $cookie_prefix) {
 			unset($_COOKIE[$name]);
 			unset($GLOBALS[$name]);
 		}
diff --git a/ecrire/inc/csv.php b/ecrire/inc/csv.php
index 4061a81f7bec5b49729abc85edcadb3ad0a2a7ba..69aee28855630313a626d4d35c02ed571822b945 100644
--- a/ecrire/inc/csv.php
+++ b/ecrire/inc/csv.php
@@ -81,7 +81,7 @@ function analyse_csv($t) {
 	[$entete, $corps] = explode("\n", $t, 2);
 	$caption = '';
 	// sauter la ligne de tete formee seulement de separateurs
-	if (substr_count($entete, $sep) == strlen($entete)) {
+	if (substr_count($entete, $sep) === strlen($entete)) {
 		[$entete, $corps] = explode("\n", $corps, 2);
 	}
 	// si une seule colonne, en faire le titre
@@ -98,8 +98,7 @@ function analyse_csv($t) {
 
 	// retrait des lignes vides finales
 	while (
-		count($lignes) > 0
-		and preg_match("/^$sep*$/", $lignes[count($lignes) - 1])
+		$lignes !== [] && preg_match("/^$sep*$/", $lignes[count($lignes) - 1])
 	) {
 		unset($lignes[count($lignes) - 1]);
 	}
@@ -107,7 +106,7 @@ function analyse_csv($t) {
 	$nbcols = [];
 	$max = $mil = substr_count($entete, $sep);
 	foreach ($lignes as $k => $v) {
-		if ($max <> ($nbcols[$k] = substr_count($v, $sep))) {
+		if ($max !== ($nbcols[$k] = substr_count($v, $sep))) {
 			if ($max > $nbcols[$k]) {
 				$mil = $nbcols[$k];
 			} else {
@@ -117,7 +116,7 @@ function analyse_csv($t) {
 		}
 	}
 	// Si pas le meme nombre, cadrer au nombre max
-	if ($mil <> $max) {
+	if ($mil !== $max) {
 		foreach ($nbcols as $k => $v) {
 			if ($v < $max) {
 				$lignes[$k] .= str_repeat($sep, $max - $v);
diff --git a/ecrire/inc/cvt_autosave.php b/ecrire/inc/cvt_autosave.php
index be146cacc96f5c63b2ad27c13104df012c5654c3..ea1d57a86793d032774599ef879586b53bb568a0 100644
--- a/ecrire/inc/cvt_autosave.php
+++ b/ecrire/inc/cvt_autosave.php
@@ -39,8 +39,8 @@ function autosave_clean_value($val) {
 function cvtautosave_formulaire_charger($flux) {
 	if (
 		is_array($flux['data'])
-		and isset($flux['data']['_autosave_id'])
-		and $cle_autosave = $flux['data']['_autosave_id']
+		&& isset($flux['data']['_autosave_id'])
+		&& ($cle_autosave = $flux['data']['_autosave_id'])
 	) {
 		$form = $flux['args']['form'];
 		$je_suis_poste = $flux['args']['je_suis_poste'];
@@ -52,7 +52,7 @@ function cvtautosave_formulaire_charger($flux) {
 		// on restitue les donnees
 		if (
 			isset($GLOBALS['visiteur_session']['session_autosave_' . $cle_autosave])
-			and !$je_suis_poste
+			&& !$je_suis_poste
 		) {
 			parse_str($GLOBALS['visiteur_session']['session_autosave_' . $cle_autosave], $vars);
 			foreach ($vars as $key => $val) {
@@ -67,7 +67,7 @@ function cvtautosave_formulaire_charger($flux) {
 
 		// si on est dans le charger() qui suit le traiter(), l'autosave a normalement ete vide
 		// mais si il y a plusieurs sessions il peut y avoir concurrence et un retour de l'autosave
-		if ($je_suis_poste and _request('autosave') === $cle_autosave and function_exists('terminer_actualiser_sessions')) {
+		if ($je_suis_poste && _request('autosave') === $cle_autosave && function_exists('terminer_actualiser_sessions')) {
 			terminer_actualiser_sessions();
 			// et verifions si jamais l'autosave a fait un come back, dans ce cas on le revide
 			if (isset($GLOBALS['visiteur_session']['session_autosave_' . $cle_autosave])) {
@@ -109,7 +109,7 @@ function cvtautosave_formulaire_traiter($flux) {
 		session_set('session_autosave_' . $cle_autosave, null);
 	}
 
-	if (isset($GLOBALS['visiteur_session']) and $GLOBALS['visiteur_session']) {
+	if (isset($GLOBALS['visiteur_session']) && $GLOBALS['visiteur_session']) {
 		// delai par defaut avant purge d'un backup de form : 72H
 		if (!defined('_AUTOSAVE_GB_DELAY')) {
 			define('_AUTOSAVE_GB_DELAY', 72 * 3600);
@@ -118,10 +118,10 @@ function cvtautosave_formulaire_traiter($flux) {
 		// purger aussi toutes les vieilles autosave
 		$session = $GLOBALS['visiteur_session'];
 		foreach ($session as $k => $v) {
-			if (strncmp($k, 'session_autosave_', 17) == 0) {
+			if (str_starts_with($k, 'session_autosave_')) {
 				$timestamp = 0;
 				if (preg_match(',&__timestamp=(\d+)$,', $v, $m)) {
-					$timestamp = intval($m[1]);
+					$timestamp = (int) $m[1];
 				}
 				if ($timestamp < $time_too_old) {
 					session_set($k, null);
diff --git a/ecrire/inc/cvt_configurer.php b/ecrire/inc/cvt_configurer.php
index f3108cc3b042be6f5ce972e1060d95f9222c8ae3..6a17998acf54400835c958c13ba5449afe3c5165 100644
--- a/ecrire/inc/cvt_configurer.php
+++ b/ecrire/inc/cvt_configurer.php
@@ -32,8 +32,8 @@ include_spip('inc/config');
  */
 function cvtconf_formulaire_charger($flux) {
 	if (
-		$form = $flux['args']['form']
-		and strncmp($form, 'configurer_', 11) == 0 // un #FORMULAIRE_CONFIGURER_XXX
+		($form = $flux['args']['form'])
+		&& str_starts_with($form, 'configurer_') // un #FORMULAIRE_CONFIGURER_XXX
 	) {
 		// Pour tous les formulaires CONFIGURER, ayant une fonction charger ou pas, on teste si autorisé
 		include_spip('inc/autoriser');
@@ -45,7 +45,7 @@ function cvtconf_formulaire_charger($flux) {
 		if (!charger_fonction('charger', "formulaires/$form/", true)) {
 			$flux['data'] = cvtconf_formulaires_configurer_recense($form);
 			$flux['data']['editable'] = true;
-			if (_request('var_mode') == 'configurer' and autoriser('webmestre')) {
+			if (_request('var_mode') == 'configurer' && autoriser('webmestre')) {
 				if (!_AJAX) {
 					var_dump($flux['data']);
 				}
@@ -66,9 +66,9 @@ function cvtconf_formulaire_charger($flux) {
  */
 function cvtconf_formulaire_traiter($flux) {
 	if (
-		$form = $flux['args']['form']
-		and strncmp($form, 'configurer_', 11) == 0 // un #FORMULAIRE_CONFIGURER_XXX
-		and !charger_fonction('traiter', "formulaires/$form/", true) // sans fonction traiter()
+		($form = $flux['args']['form'])
+		&& str_starts_with($form, 'configurer_') // un #FORMULAIRE_CONFIGURER_XXX
+		&& !charger_fonction('traiter', "formulaires/$form/", true) // sans fonction traiter()
 	) {
 		$trace = cvtconf_formulaires_configurer_enregistre($form, $flux['args']['args']);
 		$flux['data'] = ['message_ok' => _T('config_info_enregistree') . $trace, 'editable' => true];
@@ -110,7 +110,7 @@ function cvtconf_formulaires_configurer_enregistre($form, $args) {
 	// recuperer les valeurs postees
 	$store = [];
 	foreach ($valeurs as $k => $v) {
-		if (substr($k, 0, 1) !== '_') {
+		if (!str_starts_with($k, '_')) {
 			$store[$k] = _request($k);
 		}
 	}
@@ -166,12 +166,13 @@ function cvtconf_definir_configurer_conteneur($form, $valeurs) {
  * @return array
  */
 function cvtconf_formulaires_configurer_recense($form) {
+	$contenu = null;
 	$valeurs = ['editable' => ' '];
 
 	// sinon cas analyse du squelette
 	if (
-		$f = find_in_path($form . '.' . _EXTENSION_SQUELETTES, 'formulaires/')
-		and lire_fichier($f, $contenu)
+		($f = find_in_path($form . '.' . _EXTENSION_SQUELETTES, 'formulaires/'))
+		&& lire_fichier($f, $contenu)
 	) {
 		for ($i = 0; $i < 2; $i++) {
 			// a la seconde iteration, evaluer le fond avec les valeurs deja trouvees
@@ -188,15 +189,15 @@ function cvtconf_formulaires_configurer_recense($form) {
 
 			foreach ($balises as $b) {
 				if (
-					$n = extraire_attribut($b, 'name')
-					and preg_match(',^([\w\-]+)(\[\w*\])?$,', $n, $r)
-					and !in_array($n, ['formulaire_action', 'formulaire_action_args', 'formulaire_action_sign'])
-					and extraire_attribut($b, 'type') !== 'submit'
+					($n = extraire_attribut($b, 'name'))
+					&& preg_match(',^([\w\-]+)(\[\w*\])?$,', $n, $r)
+					&& !in_array($n, ['formulaire_action', 'formulaire_action_args', 'formulaire_action_sign'])
+					&& extraire_attribut($b, 'type') !== 'submit'
 				) {
 					$valeurs[$r[1]] = '';
 					// recuperer les valeurs _meta_xx qui peuvent etre fournies
 					// en input hidden dans le squelette
-					if (strncmp($r[1], '_meta_', 6) == 0) {
+					if (str_starts_with($r[1], '_meta_')) {
 						$valeurs[$r[1]] = extraire_attribut($b, 'value');
 					}
 				}
@@ -233,7 +234,7 @@ function cvtconf_configurer_stocker($form, $valeurs, $store) {
 
 	foreach ($store as $k => $v) {
 		ecrire_config("$stockage$table$prefixe$casier$k", $v);
-		if (_request('var_mode') == 'configurer' and autoriser('webmestre')) {
+		if (_request('var_mode') == 'configurer' && autoriser('webmestre')) {
 			$trace .= "<br />table $table : " . $prefixe . $k . " = $v;";
 		}
 	}
@@ -260,8 +261,8 @@ function cvtconf_configurer_lire_meta($form, &$valeurs) {
 		$meta = lire_config("$stockage$table");
 	}
 
-	foreach ($valeurs as $k => $v) {
-		if (substr($k, 0, 1) !== '_') {
+	foreach (array_keys($valeurs) as $k) {
+		if (!str_starts_with($k, '_')) {
 			$valeurs[$k] = ($meta[$prefixe . $k] ?? null);
 		}
 	}