Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Цензура. 
:(
    Опции темы
savage
Дата 25.10.2003, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 13.8.2003

Репутация: -1
Всего: нет



Привет! Вот я тут задался вопросом: как можно написать, допустим гостевую книгу, но чтоб она еще и проверяла заносимый текст на наличие нецензурной брани. Я опыта в написании таких штучек не имею - мне бы хотяб принцип работы этого скрипта понять.
PM MAIL   Вверх
Secandr
Дата 25.10.2003, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



можно просто искать слова по шаблону.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
savage
Дата 25.10.2003, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 13.8.2003

Репутация: -1
Всего: нет



По какому. В смысле?
PM MAIL   Вверх
arial
Дата 25.10.2003, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 772
Регистрация: 11.3.2003
Где: Архангельская обл .

Репутация: 6
Всего: 7



Вот набросал простейшую функцию. На поверку, конечно, полное фуфло, но общий смысл понять можно.

Код
<?php

function mat_filter($text, $mat_array)
{
   foreach ($mat_array as $value) {
       // Считаем кол-во звездочек, необходимых на
       // закрытие матного слова:
       $star = '';
       for ($i = 0; $i < strlen($value); $i++) {
           $star .= '*';
       }
       // Ну и заменяем матерщину звездами.
       $text = preg_replace("/$value/i", $star, $text);
   }
   return $text;
}

$mat[] = 'член';
$mat[] = 'вагина';

$text = 'Не употребляйте слова член и вагина!';

echo mat_filter($text, $mat);
?>



--------------------
Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская)
PM ICQ   Вверх
Secandr
Дата 25.10.2003, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



Код
  foreach ($mat_array as $value) {
      // Считаем кол-во звездочек, необходимых на
      // закрытие матного слова:
      $star = '';
      for ($i = 0; $i < strlen($value); $i++) {
          $star .= '*';
      }
Можно заменить на
Код
$star=ereg_replace("[^\*]", "\*", $star);



--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
arial
Дата 26.10.2003, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 772
Регистрация: 11.3.2003
Где: Архангельская обл .

Репутация: 6
Всего: 7



Цитата(Secandr @ 25.10.2003, 21:10)
Можно заменить на
Код
$star=ereg_replace("[^\*]", "\*", $star);

Точнее так:
Код
$star = ereg_replace("[^\*]", '*', $value);
hehe.gif


--------------------
Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская)
PM ICQ   Вверх
savage
Дата 26.10.2003, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 13.8.2003

Репутация: -1
Всего: нет



А, во до меня доперло! Спасибо!
PM MAIL   Вверх
Secandr
Дата 26.10.2003, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



arial Точно!
savage Вот и ладненько. Только остарожнее со значением массива $mat[], а то могут получиться весёлые вещи smile.gif


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
MuToGeN
Дата 27.10.2003, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 7
Всего: 32



> ereg_replace()

Нафиг?? Почему-то все так упорно пытаются пользовать regular expresssions вместо str_replace... Конечно, тоже вариант, но это а-ля echo "$a"; или printf("%s",$a) вместо echo $a; Все варианты будут работать, только первые два тормознее третьего.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
IZ@TOP
Дата 27.10.2003, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



MuToGeN, значит str_replace быстрее eregi_replace ?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
MuToGeN
Дата 27.10.2003, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 7
Всего: 32



Да, быстрее, причем в подобной ситуации раз в 8-10 быстрее.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
IZ@TOP
Дата 27.10.2003, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



MuToGeN
А такой код наверное будет намного эффективней:
Код

$msg = $_POST['message'];
$out = "*-- ЦЕНЗУРА ! --*";
$in = Array (
   "Ху*",
   "бл***",
   "Пи***",
   "Су**",
   "Ну и т.д. и т.п."
);

$msg = str_replace($in, $out, $msg);


Или надо под замену массив такой же длинны передавать?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
MuToGeN
Дата 27.10.2003, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 7
Всего: 32



Код
$in=Array(
   [skip]
);
for($i=0;$i<sizeof($in);$i++){
   $out[$i]="*****";
}


Так надежнее. Насчет эффективности - да, выигрыш в скорости есть.

Это сообщение отредактировал(а) MuToGeN - 27.10.2003, 17:58


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
IZ@TOP
Дата 27.10.2003, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Может ты имел ввиду это:

Цитата
for($i=0;$i<sizeof($in);$i++){
$out[$i]="*****";
}
}



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
MuToGeN
Дата 27.10.2003, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 7
Всего: 32



Именно! опечатка вышлла...


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0580 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.