PHP - Как я могу заменить тире пробелами? - PullRequest
0 голосов
/ 07 ноября 2011

В настоящее время я использую следующий код для преобразования моих строк в SEO дружественные URL:

        function url($url) {
    $url = str_replace(" ", " ", $url);
    $url = str_replace(array("'", "-"), "", $url); 
    $url = mb_convert_case($url, MB_CASE_LOWER, "UTF-8");
    $url = preg_replace("#[^a-zA-Z]+#", "-", $url); 
    $url = preg_replace("#(-){2,}#", "$1", $url); 
    $url = trim($url, "-"); 
        return $url;
} 

Когда я запрашиваю свою базу данных, я сопоставляю URL с заголовками статей в моей базе данных, моя проблема заключается в том, что после выполнения функции seo friendly url URL не совпадают ни с какими заголовками статей в моей базе данных.

Добавление черточек (не уверенных в нижнем регистре) означает, что они полностью отличаются от записей в базе данных.

Каков мой следующий шаг, я должен удалить дефисы перед запросом базы данных, если да, то как?

Или лучше куда-нибудь включить идентификатор статьи в мой URL и сослаться на него?

1 Ответ

2 голосов
/ 07 ноября 2011

Запросы по идентификатору кажутся мне гораздо быстрее и проще, чем обратное преобразование ваших заголовков, используя перезапись URL, чтобы игнорировать заголовок (только для ссылки) и вызывать страницу с идентификатором в качестве аргумента GET. Глядя на текущий URL, можно подумать, что StackOverflow работает таким образом.

Используя текущую страницу в качестве примера, я подозреваю, что

/5579959/php-kak-ya-mogu-zamenit-tire-probelami

переписано в нечто вроде

http://stackoverflow.com/questions.php?id=8034788

где простой SQL-запрос получает содержание статьи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...