希腊 URL 转换和修剪未使用的数字和符号



这个问题有点复杂,因为我是PHP编码的新手。我的网站使用 utf-8 编码。

经过大量测试,我找到了一些解决方案。我使用这种代码:

function chr_conv($str)
{
    $a=array with pattern('%CE%B2','%CE%B3','%CE%B4','%CE%B5' etc..);
    $b=array with replacement characters(a,b,c,d, etc...);
    return str_replace($a, $b2, $str);
}
function replace_old($str)
{
    $a1 = array ('index.php','/http://' etc...);
    $a2 = array with replacement characters('','' etc...);
    return str_replace($a1, $a2, $str);
}
function sanitize($url)
{
    $url= replace_old(replace_old($url));
    $url = strtolower($url);
    $url = preg_replace('/[0-9]/', '', $url);
    $url = preg_replace('/[?]/', '', $url);
    $url = substr($url,1);
    return $url;
}
function wbz404_process404()
{
    $options = wbz404_getOptions();
    $urlRequest = $_SERVER['REQUEST_URI'];
    $url = chr_conv($urlRequest);
    $requestedURL = replace_old(replace_old($url));
    $requestedURL .= wbz404_SortQuery($urlParts);
    //Get URL data if it's already in our database
    $redirect = wbz404_loadRedirectData($requestedURL);
    echo sanitize($requestedURL);
    echo "</br>";
    echo $requestedURL;
    echo "</br>";
}

当传入网址为:

/content.php?147-%CE%A8%

CE%AC%CF%81%CE%B9-%CE%BC%CE%B5-%CF%80%CF%81%CE%AC%CF%83%CE%B1%28%CE%A7%CE%BF%CF%8D%CE%BC%CF%80%CE%BB%CE%B9%CE%BA%29";

我得到:

/content.php?147-psari-me-prasa-choumplik

我只想要:

/psari-me-prasa-choumplik

没有 URL 之前的content.php?147-。但最重要的问题是我得到无限循环而不是正确的 URL。

我做错了什么?

请记住,.htaccess解决方案不起作用,因为我有一个lighttpd服务器,而不是Apache.

如果你需要

我假设并不总是需要跳过 ?147-。但总是在第一个连字符之后。在这种情况下,在回显之前添加以下内容:

$requestedURL = substr($requestedURL, strrpos( $requestedURL , '-') +1 );

这将搜索第一个连字符的位置并返回该位置,添加一个连字符,以便跳过连字符本身,并使用它来将连字符之后的$requestedURL字符串剪切到字符串的末尾。

如果它总是/content.php?127- 则用数字 17 替换 strrpos( $requestedURL , '-') +1。

最新更新