希腊网址转换和修剪不需要的数字和符号

时间:2014-03-01 10:31:13

标签: php wordpress

这个问题有点复杂,因为我是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

没有content.php?147-之前的网址。 但最重要的问题是我得到ENDLESS LOOP而不是正确的URL。

我做错了什么?

请注意.htaccess解决方案不起作用,因为我有lighttpd服务器,而不是Apache

1 个答案:

答案 0 :(得分:0)

如果您需要

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

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

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

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