Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Очистить строку от символов +%* и т.д. (http://forum.oszone.net/showthread.php?t=166429)

Artem-Samsung 05-02-2010 22:05 1340104

Очистить строку от символов +%* и т.д.
 
Цель - создание ЧПУ.
В адресной строке мне нужно что бы были только буквы английского алфавита и подчеркивание.

для преобразования в английский алфавит русских заголовков я использую функцию, которую на этом же форуме мне любезно предоставили:

Код:

function encodestring($st){
    $st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_", "abvgdeeziyklmnoprstufh'iei");
    $st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_", "ABVGDEEZIYKLMNOPRSTUFH'IEI");
        $st=strtr($st, array(
                "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",
                "щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
                "Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH",
                "Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
                "ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"
        ));                return $st;
}

А вот для очистки от лишних сиволов я делаю такое:

Код:

function textclear ($t) {
        $t = ltrim($t);        $t = rtrim($t);
        $t = str_replace(" - ", "-", $t);        $t = str_replace(" ", "_", $t);
        $t = str_replace("`", "",$t);        $t = str_replace("’", "",$t);
        $t = str_replace("\"", "",$t);        $t = str_replace("\'", "",$t);
        $t = str_replace(",", "",$t);        $t = str_replace(".", "",$t);
        $t = str_replace("«", "",$t);        $t = str_replace("»", "",$t);
        $t = str_replace("+", "plus", $t);        $t = str_replace("%", "",$t);
        return $t;
}

Может есть какие то более толковые методы, потому что таким образом все символы не предусмотреть.
Спасибо

mar 05-02-2010 22:33 1340125

Так просто вычистить методом исключения: все, что НЕ нужное - превратив в '', например, через preg_replace. А нужное, это [a-zA-Z_]

Sham 05-02-2010 23:00 1340141

Цитата:

Цитата Artem-Samsung
А вот для очистки от лишних сиволов я делаю такое »

имхо этого достаточно
PHP код:

$t preg_replace('~[^a-zA-Z0-9\_\-]+~''_'$t); 



Время: 20:19.

Время: 20:19.
© OSzone.net 2001-