Как мне очистить URI-адреса заголовков с помощью PHP?


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

Заранее благодарю,
Омер

Author: James Butler, 2009-09-16

4 answers

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

 2
Author: soulmerge, 2017-05-23 12:31:46

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

trim(preg_replace('/[^a-z0-9-]+/', '-', strtolower($str)), '-')
 6
Author: Gumbo, 2009-09-16 11:59:16

Вот как это делает 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
Author: raspi, 2013-11-18 15:23:36

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

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

 2
Author: Will Morgan, 2009-09-16 11:56:17