Функция за изчистване на стринг

Hous

Registered
Някой може ли да даде функция,която да "изчиства" примерен стринг:
some'text & some_other ^ text " ' goes here bla lablablablblalba baba---balbalba от'време на време имаи бг в стринга ^ & *
като се преобърне във стринг готов за ърл :
some-text-some-other-text-goes-here-bla-lalalbablbalba-baba-balbaba-ot-vreme-na-vreme-imai-bg-v-stringa
Дано схванахте идеята.
В момента ползвам една Funkcia
но не върши работа...

пс:най-кратко от целия стринг ми трябват само a-z (малки) тирета и числа.
като конвертираме кирилицата в латиница,и празните места и каквито и да е други символи освен a-z 0-9 в тирета
 
PHP:
$string = preg_replace('/[^А-Яа-яA-Za-z0-9_-]+/iu', '', $string);

То всъщност можеш без да пишеш големите букви, то регулярни израз се грижи да не намира разлика дали са големи и малки. Но ако искаш си ги остави така описани.
 
eddyy93 каза:
PHP:
$string = preg_replace('/[^А-Яа-яA-Za-z0-9_-]+/iu', '', $string);

То всъщност можеш без да пишеш големите букви, то регулярни израз се грижи да не намира разлика дали са големи и малки. Но ако искаш си ги остави така описани.
от това кето си дал при примерен стринг:
test и test - bla bla
излиза
testиtest-blabla
не прилича много на url friendly...
пс:най-кратко от целия стринг ми трябват само a-z (малки) тирета и числа.
като конвертираме кирилицата в латиница,и празните места и каквито и да е други символи освен a-z 0-9 в тирета

ps:@Styl3r мисля,че твоето става,само ако може да кажеш кое точно трябва да се промени ,за да не бъде test_test_test а test-test-test
 
Ето това със тази функция горе, която са ти прати си конвертираш всичко и го прилагаш на тези регулярни изрази, използвай тази функция ако смяташ, че може да имаш текстове на кирилица, в противен случай недей е използвай.




Тъй като искаш само латиница при URL - то, ти оставям латинските букви само от регулярни израз.

Какво прави първият регулярен израз:
Премахва всички символи, който не са латински букви, числа, отстъпи, доллни черти и тирета.

Какво прави вторият регулярен израз:
Премахва всички празни места между различните думи и ги замества със " - ", с какво този регулярен израз е по - добър от този str_replace горе? Ако имаш 5 пъти отстъп между две думи, ще ти се появи 5 пъти тире. Ако обаче е със този регулярен израз това няма да се случи, заради ето този "+".

PHP:
$string = preg_replace('/[^A-Za-z0-9\s_-]+/', '', $string);
$string = preg_replace('/\s+/', '-', $string);
echo $string;

Ето с този стринг може да тестваш:

PHP:
$string = "some't                               ext & some_oth  *%^&#%@# @# $#@ !: ^ text  ' g                        oes here bla lablablablblalba baba-balbalba";
 
Hous каза:
eddyy93 каза:
PHP:
$string = preg_replace('/[^А-Яа-яA-Za-z0-9_-]+/iu', '', $string);

То всъщност можеш без да пишеш големите букви, то регулярни израз се грижи да не намира разлика дали са големи и малки. Но ако искаш си ги остави така описани.
от това кето си дал при примерен стринг:
test и test - bla bla
излиза
testиtest-blabla
не прилича много на url friendly...
пс:най-кратко от целия стринг ми трябват само a-z (малки) тирета и числа.
като конвертираме кирилицата в латиница,и празните места и каквито и да е други символи освен a-z 0-9 в тирета

ps:@Styl3r мисля,че твоето става,само ако може да кажеш кое точно трябва да се промени ,за да не бъде test_test_test а test-test-test
Замени в $latinica "_" с "-"
 
@styl3r опитах но нищо не стана,после го смених така
Код:
function toslug($lat2){
        $lat = stripslashes($lat2);
        $latinica=array("a","b","v", "g","d","e", "j", "z", "i", "ii", "k", "l", "m","n","o", "p","r","s", "t","u","f", "h","c","ch" , "sh","sht", "u", "io", "iu", "q", "a","b","v", "g","d","e", "j", "z", "i", "ii", "k", "l", "m","n","o", "p","r","s", "t","u","f", "h","c","ch" , "sh","sht", "u", "io", "iu", "q", "4", "6", "6t", "-", "", "", "", "", '', '', '', '', '', '', '', '', '', '-', '', '', '', '', ''); //латинските букви
        $kirilica=array("а", "б", "в", "г", "д", "е", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ь", "ю", "я", "А", "Б", "В", "Г", "Д", "Е", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ь", "Ю", "Я", "ч", "ш", "щ", " ", ",", ".", "&", "'", '"', "!", "?", "(", "[", "]", ")", ";", ":", "---", "”", "„", "+", "“", "/"); //кирилица, съответстващ на латиницата по-горе
        $bbc_num=count($kirilica); //бройм елементите във $kirilica
        $loop=0;
        while($loop<$bbc_num){
        $lat=str_replace($kirilica[$loop], $latinica[$loop], $lat); //заместваме
        $loop++;
        }
        $lat=str_replace("__", "_", $lat);
        return strtolower($lat);//vs v malki bukvi 
}

а и явно ,трябва да се даде някакво конвертиране за спецални символи (освен латиница и кирилица)
примерно:
timó 123
в адреса излиза url.com/timó-123

@eddyy93
добре е идеята на теория но на практика ми осъкатява адреса примерния запис timó-123 става tim-123
:lol:

ps:
Код:
....
'a', 'e', 'i', 'o', 'u', 'n', 'u'); //латинските букви
...
"á", "é", "í ", "ó", "ú", "ñ","ü"); //кирилица, съответстващ на латиницата по-горе
добавих и вс е ок,благодаря на 2мата за помощта но styl3r получава точката :)
 
Как на теория? :D

Това което съм ти дал съм го тествал и работи отлично.

Поне ползвай
PHP:
$string = preg_replace('/\s+/', '-', $string);
това вместо str_replace();, повярвай ми.
 

Back
Горе