0

我正在使用该功能以防止错误的 URL 结构:

    <?
if (!defined('BASEPATH'))
    exit('No direct script access allowed');

if (!function_exists('seo_helper')) {

function seo_link($deger) {
$turkce=array("ş","Ş","ı","(",")","'","ü","Ü","ö","Ö","ç","Ç"," ","/","*","?","ş","Ş","ı","ğ","Ğ","İ","ö","Ö","Ç","ç","ü","Ü");
$duzgun=array("s","S","i","","","","u","U","o","O","c","C","-","-","-","","s","S","i","g","G","I","o","O","C","c","u","U");
$deger=str_replace($turkce,$duzgun,$deger);
$deger = url_title_plus($deger);
return $deger;
}  

}  


if ( ! function_exists('url_title_plus'))
{
    function url_title_plus($str, $separator = 'dash', $lowercase = FALSE)
    {
        if ($separator == 'dash')
        {
            $search     = '_';
            $replace    = '-';
        }
        else
        {
            $search     = '-';
            $replace    = '_';
        }

        $trans = array(
                        '&\#\d+?;'              => '',
                        '&\S+?;'                => '',
                        '\s+'                   => $replace,
                        '[^a-z0-9\-\._]'        => '',
                        $replace            => $replace,
                        $replace.'$'            => $replace,
                        '^'.$replace            => $replace,
                        '\.+$'                  => ''
                    );

        $str = strip_tags($str);

        foreach ($trans as $key => $val)
        {
            $str = preg_replace("#".$key."#i", $val, $str);
        }

        if ($lowercase === TRUE)
        {
            $str = strtolower($str);
        }

        return trim(stripslashes($str));
    }
}

输入字符串:

ATA'DAN MEZİTLİDE 4+1 HAVUZLU GÜVENLİKLİ KAÇMAZ!!!

输出:

ATADAN-MEZITLIDE-41-HAVUZLU-GUVENLIKLI-KACMAZ

我想要的是:

ATADAN-MEZITLIDE-4+1-HAVUZLU-GUVENLIKLI-KACMAZ
4

1 回答 1

1

替换这部分代码并检查它:-

'[^a-z0-9\-\+\._]'        => '',

它的作用是允许加号(+)。而不是用''代替它。

于 2012-10-31T11:45:31.083 回答