Как санировать заголовки URI с помощью PHP? - PullRequest
2 голосов
/ 16 сентября 2009

Я программирую блог и хочу, чтобы заголовки URI были такими же, как заголовок вопроса здесь в stackoverflow или как wordpress.
Каковы правила санации URI?
Есть ли уже сделанный код в PHP, который делает это?

Заранее спасибо,
Омер

Ответы [ 4 ]

6 голосов
/ 16 сентября 2009

Вот как это делает drupal .

В случае отказа сайта:

<?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;
}
6 голосов
/ 16 сентября 2009

Это может быть самый короткий способ заменить любой не алфавитно-цифровой символ одним дефисом:

trim(preg_replace('/[^a-z0-9-]+/', '-', strtolower($str)), '-')
2 голосов
/ 16 сентября 2009

Как правило, вы хотите, чтобы в вашем URL были только 0-9 и a-z, и убедитесь, что все строчные. Замените пробелы тире (-) и уберите остальную часть тарабарщины.

ТАК в значительной степени это выяснилось.

2 голосов
/ 16 сентября 2009

Многие CMS реализовали что-то подобное, тот из Wordpress был опубликован в другой вопрос . Вас может заинтересовать вопрос об этой технике в целом тоже.

...