Come posso disinfettare gli URI dei titoli con PHP?
-
07-07-2019 - |
Domanda
Sto programmando un blog e voglio che gli URI siano il titolo come il titolo della domanda qui in StackOverflow o come wordpress.
Quali sono le regole per la sanificazione di un URI?
Esiste un codice già creato in PHP che lo fa?
Grazie in anticipo,
Omer
Soluzione
Molti CMS hanno implementato qualcosa del genere, quello di Wordpress è stato pubblicato in un'altra domanda . Potresti essere interessato alla domanda su questa tecnica anche in generale.
Altri suggerimenti
Questo potrebbe essere il modo più breve per sostituire qualsiasi carattere non alfanumerico con un singolo trattino:
trim(preg_replace('/[^a-z0-9-]+/', '-', strtolower($str)), '-')
In caso di caduta del sito:
<?php
function pathauto_cleanstring($string)
{
$url = $string;
$url = preg_replace('~[^\\pL0-9_]+~u', '-', $url); // substitutes anything but letters, numbers and '_' with separator
$url = trim($url, "-");
$url = iconv("utf-8", "us-ascii//TRANSLIT", $url); // TRANSLIT does the whole job
$url = strtolower($url);
$url = preg_replace('~[^-a-z0-9_]+~', '', $url); // keep only letters, numbers, '_' and separator
return $url;
}
Generalmente vorresti che il tuo URL avesse solo 0-9 e a-z, e assicurati che tutto sia in minuscolo. Sostituisci gli spazi con trattini (-) e rimuovi il resto del gibberish.
È così praticamente capito.