58 lines
1.5 KiB
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 */
|
||
|
static function nbsp(?string $value): ?string {
|
||
|
if ($value === null) return null;
|
||
|
return preg_replace('/ +/', ' ', $value);
|
||
|
}
|
||
|
}
|