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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться с функцией, вырезает лишнее 
:(
    Опции темы
lollollollol
Дата 30.9.2013, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Здравствуйте, есть функция которая вырезает все лишние символы из переменной

Код

function utf8_str_split($str) { 
  // place each character of the string into and array 
  $split=1; 
  $array = array(); 
  for ( $i=0; $i < strlen( $str ); ){ 
    $value = ord($str[$i]); 
    if($value > 127){ 
      if($value >= 192 && $value <= 223) 
        $split=2; 
      elseif($value >= 224 && $value <= 239) 
        $split=3; 
      elseif($value >= 240 && $value <= 247) 
        $split=4; 
      elseif($value >= 10 && $value <= 13) 
        $split=5; 
    }else{ 
      $split=1; 
    } 
      $key = NULL; 
    for ( $j = 0; $j < $split; $j++, $i++ ) { 
      $key .= $str[$i]; 
    } 
    array_push( $array, $key ); 
  } 
  return $array; 

/** 
 * Функция вырезки
 * @param <string> $str 
 * @return <string> 
 */ 
function clearstr($str){ 
        $sru = 'ёйцукенгшщзхъфывапролджэячсмитьбю'; 
        $s1 = array_merge(utf8_str_split($sru), utf8_str_split(strtoupper($sru)), range('A', 'Z'),range('А', 'Я'),range('а', 'я'), range('a','z'), range('0', '9'), array('!',' ','@',';','%','?',':','(',')','-','_','=','+','[',']',',','.','*','\\',"\r","\n",0x0A,0x0D)); 
        $codes = array(); 
        for ($i=0; $i<count($s1); $i++){ 
                $codes[] = ord($s1[$i]); 
        } 
        $str_s = utf8_str_split($str); 
        for ($i=0; $i<count($str_s); $i++){ 
                if (!in_array(ord($str_s[$i]), $codes)){ 
                        $str = str_replace($str_s[$i], '', $str); 
                } 
        } 
        return $str; 






Вызывается так:

$result=clearstr($str);


Но проблема в том что оно убирает переносы строк.
Подскажите пожалуйста, как сделать так, чтобы функция оставляла переносы строк?


Я вроде бы в массив уже добавил "\r","\n",0x0A,0x0D , но не работает
PM MAIL   Вверх
baldina
Дата 30.9.2013, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 26
Всего: 101



Цитата(lollollollol @  30.9.2013,  12:19 Найти цитируемый пост)
Я вроде бы в массив уже добавил "\r","\n",0x0A,0x0D , но не работает 

ну что-то не видно, что бы этот массив как-то использовался

btw есть мнение, что задачу можно решить немного проще 
пусть $a - строка запрещенных символов, $b - исходная строка, тогда удалить запрещенные символы можно так
Код

str_replace (str_split($a), $b);


PM MAIL   Вверх
lollollollol
Дата 30.9.2013, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Мне нужно оставить только те символы, которые в строке 34 моего кода, кстати там и используется этот массив.
остальные все убрать
PM MAIL   Вверх
baldina
Дата 30.9.2013, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 26
Всего: 101



т.е. "\r","\n",0x0A,0x0D надо оставить?
PM MAIL   Вверх
lollollollol
Дата 30.9.2013, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Верно, в этом массиве символы которые необходимо оставить
PM MAIL   Вверх
baldina
Дата 30.9.2013, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 26
Всего: 101



Код

preg_replace ('/[^\w\r\n\.\\\+*=,;@%!\[\]]/u', '', $str);


Добавлено через 3 минуты и 19 секунд
даже наверно так
Код

preg_replace ('/[^\w\s\.\\\+\-*=,;:@%!\(\)\[\]]/u', '', $str);

PM MAIL   Вверх
lollollollol
Дата 30.9.2013, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо, но тоже самое, съедает перенос строки

Код

    $messageP=preg_replace ('/[^\w\s\.\\\+\-*=,;:@%!\(\)\[\]]/u', '', $_POST['messageP']);

PM MAIL   Вверх
lollollollol
Дата 30.9.2013, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Извиняюсь, ошибся, всё в порядке, стормозил

Спасибо!

Это сообщение отредактировал(а) lollollollol - 30.9.2013, 23:04
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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