Прошу помощи с PHP скриптом для сайта!!!

12
P
На сайте с 17.07.2010
Offline
2
1070

Помогите пожалуйста с дороботкай скрипта! Мне очень нужна такая штука:

Чтобы пользователь мог ввести в форму текст к примеру "Фото в Минске!!!"

у формы был action="document.php"

В php документе должна быть такая штука, которая убирает заглавные и большие буквы, слова меньше 3 символов и знаки препинания.

А затем должно получиться так "фотоминске"

И еще вторая часть кода:

если переменная "фотоминске" то ссылается на документ1.html

если переменная "2" то ссылается на документ2.html

а если переменная что-то другое то ссылается на документ3.html

Мне немного помогли, но до конца у меня сделать не получается!

Форма:

<form action="document.php" method="POST" enctype="application/x-www-form-urlencoded">

Текстовая строчка (Фото в Минске!!!, 2 и ... другое): <input name="var" type="text" />

<br />

<input type="submit" name="send" value=" OK " />

</form>

document.php :

<?php

if (isset($_POST['var']))

switch ($_POST['var'])

{

/

case 'фотоминске':header('Location: http://1.html);exit;

case '2':header('Location: http://2.html);exit;

default:

{

header('Location: 3.html');

exit;

}

}

?>

Помогите пожалуйста!

pikasso
На сайте с 27.01.2008
Offline
150
#1

То есть вы просто хотите чтобы вам написали скрипт ? О_о

P
На сайте с 17.07.2010
Offline
2
#2

Ну если не тяжело.

Просто в интернете я нашел много насчет того, как сделать то что мне надо, но у меня не получилось.

На сколько я знаю тут не хватает около 5 строчек.

Я просто не знаю пунктуацию php так хорошо, как хотелось бы.

Конечно "Спасибо" не льется, но если вы можете написать, буду очень презнателен!

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#3
PRdirect:
В php документе должна быть такая штука, которая убирает заглавные и большие буквы, слова меньше 3 символов и знаки препинания.

Как я понял, то не хватает именно обработки? Тогда просто почитать про работу со строками http://www.php.su/functions/?cat=strings

Пример document.php:

<?php

if (isset($_POST['var'])) {
$post=htmlspecialchars(strtolower(trim($_POST['var'])));
$words=explode(" ",$post);
$post_res="";
foreach( $words as $word){
if(strlen($word)>2){$post_res.=$word;}
}
}
switch ($post_res)
{
case 'фотоминске':header('Location: 1.html');
exit;
case '2':header('Location: 2.html');
exit;
default:
{
header('Location: 3.html');
exit;
}
}
?>
P
На сайте с 17.07.2010
Offline
2
#4

Не хочет работать что-то? Ссылается на 3.html

maldivec
На сайте с 04.11.2008
Offline
160
#5
PRdirect:
Не хочет работать что-то? Ссылается на 3.html

У вас кодировка utf-8? Тогда беда в функции strtolower, не умеет она с utf-8 работать ;)

Ладно, ловите, раз уж Ёхан Палыч начал:


<?php
function _strtolower($string)
{
$small = array('а','б','в','г','д','е','ё','ж','з','и','й',
'к','л','м','н','о','п','р','с','т','у','ф',
'х','ч','ц','ш','щ','э','ю','я','ы','ъ','ь',
'э', 'ю', 'я');
$large = array('А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й',
'К','Л','М','Н','О','П','Р','С','Т','У','Ф',
'Х','Ч','Ц','Ш','Щ','Э','Ю','Я','Ы','Ъ','Ь',
'Э', 'Ю', 'Я');
return str_replace($large, $small, $string);
}

if (isset($_POST['var'])) {
$post=htmlspecialchars(_strtolower(trim($_POST['var'])));
$words=explode(" ",$post);
$post_res="";
foreach( $words as $word){
if(strlen($word)>2||(count($words)==1&&$word=='2')){$post_res.=$word;}
}
}
switch ($post_res)
{
case 'фотоминске':header('Location: 1.html');
exit;
case '2':header('Location: 2.html');
exit;
default:
{
header('Location: 3.html');
exit;
}
}
?>
P
На сайте с 17.07.2010
Offline
2
#6

Спасибо!

Только со знаками препинания что-то не так. Я ставлю в конце "!" и уже не работает!

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#7
PRdirect:
Не хочет работать что-то? Ссылается на 3.html

Работает, если ввести "Фото в Минске", знаки препинания не удаляются, чтобы их удалять используйте str_replace

maldivec:
У вас кодировка utf-8? Тогда беда в функции strtolower, не умеет она с utf-8 работать

Действительно так, тут много вариантов обхода.

P
На сайте с 17.07.2010
Offline
2
#8

Как мне указать правильную кодировку, чтобы все работало?

maldivec
На сайте с 04.11.2008
Offline
160
#9
PRdirect:
Как мне указать правильную кодировку, чтобы все работало?

Глаза раскройте, я вам представил рабочий код :)

maldivec добавил 21.07.2010 в 16:31

Ёхан Палыч:
знаки препинания не удаляются, чтобы их удалять используйте str_replace

Тогда уж preg_replace )

maldivec добавил 21.07.2010 в 16:41

Кстати с preg_replace даже удобнее:


<?php
function _strtolower($string)
{
$small = array('а','б','в','г','д','е','ё','ж','з','и','й',
'к','л','м','н','о','п','р','с','т','у','ф',
'х','ч','ц','ш','щ','э','ю','я','ы','ъ','ь',
'э', 'ю', 'я');
$large = array('А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й',
'К','Л','М','Н','О','П','Р','С','Т','У','Ф',
'Х','Ч','Ц','Ш','Щ','Э','Ю','Я','Ы','Ъ','Ь',
'Э', 'Ю', 'Я');
return str_replace($large, $small, $string);
}

if (isset($_POST['var'])) {

$post_res=preg_replace("/[^a-zа-я0-9]+/iu","",(_strtolower(trim($_POST['var']))));

switch ($post_res)
{
case 'фотоминске':header('Location: 1.html');
exit;
case '2':header('Location: 2.html');
exit;
default:
{
header('Location: 3.html');
exit;
}
}
}
?>
dkameleon
На сайте с 09.12.2005
Offline
386
#10
maldivec:

Ладно, ловите, раз уж Ёхан Палыч начал:

вас ист дас? :)

$str = mb_strtolower($str, 'UTF-8');
Дизайн интерьера (http://balabukha.com/)
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий