2016-08-09 5 views
0

Сценарий: Как известно, StackOverflow проверяет заголовок в вопросе. Я имею в виду, когда вы откроете этот URL:Как я могу проверить сообщение?

http://stackoverflow.com/questions/38839016/should-i-store-the-result-of-an-function 

автоматически будет заменен следующим образом:

http://stackoverflow.com/questions/38839016/should-i-store-the-result-of-an-function-into-an-array 

Это замена из-за того, чтобы быть неполными первый URL.


Хорошо, я пытаюсь создать такую ​​систему с помощью PHP. Вот моя попытка:

// getting this from the URL 
$id = '38839016'; 

// fetching this from database based on that id (38839016) 
$real_title = $result['title']; 
//=> Should I store the result of an function into an array 
$real_title = str_replace("-"," ",strtolower($real_title)); 
//=> should-i-store-the-result-of-an-function-into-an-array 

// getting whole uri         
$current_uri = $_SERVER["REQUEST_URI"]; 
//=> /questions/38839016/should-i-store-the-result-of-an-function 

Что я хочу сделать: Мне нужно сравнить $real_title с заглавной части $current_uri. Как я могу определить "title-part"? Это все, что после $id.'/' до / или ? или $(конец строки). Как я могу сделать это сравнение?

И потом:

if (preg_match("//", $current_uri)) { 
    // all fine. continue loading the page 
    continue; 
} else { 
    // replace title-part of the $current_uri with $real_title  
    preg_replace("//", $real_title, $current_uri);   

    // redirect to this post with correct slug 
    header('Location: '.$_SERVER["HTTP_HOST"].); 
} 

кратко, я хочу закончить эти:

if (preg_match("//", $current_uri)) { 

preg_replace("//", $real_title, $current_uri); 

ответ

1

Ok, простыми словами, есть хороший URL и запрашиваемый URL

если запрошенный URL не равен хорошему URL-адресу

перенаправить посетителя на хороший

<? 
$id = '38839016'; 
$good_url = '/questions/'.$id.'/'.str_replace("-"," ",strtolower($result['title'])); 

preg_match('/\/[0-9]+\/([a-z0-9-]+)\/.*/', $_SERVER[REQUEST_URI], $matches); 
if ($matches[1] != str_replace("-"," ",strtolower($result['title']))) 
header('Location: '.$good_url); 
+0

Это решение не выполняется, если есть некоторые передаваемые-параметры, как метод GET, как это: 'arg1 = value1 & арг2 = value2' –

+0

@MartinAJ К сожалению, я добавил этот ответ, потому что вы добавляете StackOverflow пример – Mostafa

+0

Вы хотите исправить только слизень в URL-адресе без изменения какого-либо другого синтаксиса в URL-адресе? – Mostafa

Смежные вопросы