nur-sery/nur_src/v/html.php

58 lines
1.5 KiB
PHP

<?php
namespace nur\v;
use nur\A;
/**
* Class html: des outils pour générer du HTML
*/
class html {
/** quoter une valeur à mettre dans un attribut HTML */
static function qa(?string $value): ?string {
if ($value === null) return null;
return htmlspecialchars($value);
}
/**
* retourner un url modifié en lui rajoutant les paramètres spécifiés.
*
* les tableaux de $params sont applatis avant utilisation.
*/
static function bu(string $url, ...$params): string {
if (!$params) return $url;
$parts = parse_url($url);
if ($parts === false) {
# url invalide... on laisse tomber
return $url;
}
$url = "";
$part = A::get($parts, "scheme", false);
if ($part !== false) $url .= "$part:";
$part = A::get($parts, "host", false);
if ($part !== false) $url .= "//$part";
$part = A::get($parts, "port", false);
if ($part !== false) $url .= ":$part";
$part = A::get($parts, "path", false);
if ($part !== false) $url .= "$part";
$part = A::get($parts, "query", "");
A::flatten($params);
$part2 = http_build_query($params);
if ($part2) {
if ($part != "") $part .= "&";
$part .= $part2;
}
if ($part != "") $url .= "?$part";
$part = A::get($parts, "fragment", false);
if ($part !== false) $url .= "#$part";
return $url;
}
/** retourner $value avec les espaces remplacés par &nbsp; */
static function nbsp(?string $value): ?string {
if ($value === null) return null;
return preg_replace('/ +/', '&nbsp;', $value);
}
}