Bir değişkeni kullanırken PHP sorunu tire

0 Cevap php

Benim web sitesi bir arama motorudur.

. Benim htaccess dosyasında var:

RewriteRule ^news/(.*)\.html$ /results/news.php?name=$1

Ve benim link yapıdır /news/what-is-up.html tire kullanarak.

I /results/news.php?name=hello world ararken ben kullanırken daha farklı sonuçlar elde /news/hello-world.html

Bu arama hello-world hypens yerine boşlukları kullanarak, kolayca bir + işaretini kullanarak çözebilir arıyor ama ben tire kullanmak istediğiniz gibi görünüyor. Herkes bunu biliyor mu?

Bu benim dostu URL içine isim değişkeni dönüştürmek için kullanabileceğiniz kodu:

function toAscii($str, $replace=array(), $delimiter='-') {
if( !empty($replace) ) {
    $str = str_replace((array)$replace, ' ', $str);
}

$clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
$clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
$clean = strtolower(trim($clean, '-'));
$clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);

return $clean;
}

ve benim arama motoru böyle http konumunu kullanır:

if ($q != '') {
   header( 'Location: http://'.$_SERVER['SERVER_NAME'].'/news/'.toAscii($q).'.html' );
   die();
}
else
{
    header('Location:http://'.$_SERVER['SERVER_NAME'].'/news/');
    die();
}

Teşekkürler

0 Cevap