ФорумПрограммированиеPHP для идиотов → Помогите с регуляркой

Помогите с регуляркой

  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz Фев. 4, 2010, 3:53 п.п.

    $str_array = str_split($text);
    foreach $str_array as $symbol
    {
    if (preg_match("#[\d\s\a-z]{1}#i", $symbol)) $array[]=$symbol;
    }
    $new_text = implode('', $array);
    Спустя 39 сек.
    [\d\sa-z\.] вот)
    Спустя 17 сек.
    Примерно так. Писал с браузера)
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz Фев. 4, 2010, 4:24 п.п., спустя 31 минуту 35 секунд

    <?php
    function del_sym ($text)
    {
    $str_array = str_split($text);
    foreach ($str_array as $symbol)
    {
    if (preg_match("#^[\d\s\.a-z]{1}$#i", $symbol)) $array[]=$symbol;
    }
    return implode('', $array);
    }
    $text = "dv3f4fdf#$%$\dsdDE4…4242$^## d d aa";
    echo del_sym ($text);
    ?>

    http://vasenin.net/pyha.php
    Спустя 231 сек.
    Ну или так:
    echo preg_replace ("#[^\d\s\.a-z]{1}#i", '', $text);
  • komyak

    Сообщения: 17 Репутация: N Группа: Кто попало

    Spritz Фев. 4, 2010, 9:07 п.п., спустя 4 часа 42 минуты 29 секунд

    Не пойдёт?

    $text = addcslashes( $str, "-" );
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Фев. 4, 2010, 10:37 п.п., спустя 1 час 29 минут 57 секунд

    Я так делаю:
    $query = preg_replace('/[^a-zа-я0-9\s\.]+/iu', '', $query);
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz Фев. 4, 2010, 10:52 п.п., спустя 14 минут 55 секунд

    kichSman, если я н ошибаюсь в \w = [a-zA-Z0-9_]
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Фев. 4, 2010, 11:27 п.п., спустя 35 минут 35 секунд

    VaseninM, только с русскими не работает…
    Спустя 43 сек.
    и указывать a-zA-Z - муветон, лучше так a-Z, а еще лучше указывать модификатор "i"
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz Фев. 4, 2010, 11:34 п.п., спустя 6 минут 40 секунд

    adw0rd, не a-Z а A-z потому что капс раньше идет по таблице
    но так указывать не надо потому что будет пропускать еще и [ \ ] ^ _ `
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz Фев. 4, 2010, 11:37 п.п., спустя 3 минуты 18 секунд

    adw0rd, просто в статьях пыхи так написано.)
    \w - любой алфавитно-цифровой символ [a-zA-Z0-9_]
    Тут в общем то вопрос в _. Если он есть, то оно ему не подходит.
    сам я обычно a-z с модификатором i пишу.

    А вот на счет русских букв:
    в свое время что то не срабатывали русские буквы прег_матче. С того времени думал, что о с ними не работает 0_о
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Фев. 4, 2010, 11:40 п.п., спустя 2 минуты 28 секунд


    adw0rd, не a-Z а A-z потому что капс раньше идет по таблице
    но так указывать не надо потому что будет пропускать еще и [ \ ] ^ _ `


    Да, ссорь, спутал. Давно так не использовал.
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz Фев. 4, 2010, 11:53 п.п., спустя 13 минут 29 секунд

    да это муветон, прально делал
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz Фев. 5, 2010, 12:39 д.п., спустя 45 минут 48 секунд


    Теперь единственная трудность, что не могу перед заменяемым поставить слэш "\" через preg_replace() , т.е. не работает
    preg_replace("/[^\s\w\d\.]{1}/i","\\$0",$xxx);


    а хотелось бы, чтобы вместо "-" выдавалось "\-"

    Так работает:
    	$a ="-";
    echo preg_replace ("#[^\d\s\.a-z]{1}#i", "\\" . $a, $text);
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Фев. 5, 2010, 1:10 д.п., спустя 31 минуту 12 секунд


    $str_array = str_split($text);
    foreach $str_array as $symbol
    {
    if (preg_match("#[\d\s\a-z]{1}#i", $symbol)) $array[]=$symbol;
    }
    $new_text = implode('', $array);
    Спустя 39 сек.
    [\d\sa-z\.] вот)
    Спустя 17 сек.
    Примерно так. Писал с браузера)
    ебать … пошел глаза протру, может не то показалось
    Сапожник без сапог
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz Фев. 5, 2010, 1:15 д.п., спустя 4 минуты 28 секунд

    phpdude, да лан… Заебись))) Сначала написал. Потом подумал. И еще раз написал все в одну строчку)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Фев. 5, 2010, 1:16 д.п., спустя 1 минуту 15 секунд


    phpdude, да лан… Заебись))) Сначала написал. Потом подумал. И еще раз написал все в одну строчку)
    если еще раз подумать то можно написать в 0 строчек ^^
    Сапожник без сапог
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz Фев. 5, 2010, 1:22 д.п., спустя 5 минут 32 секунды

    phpdude, не.. Не хочу так далеко углубляться. Пусть будет в одну)
    Дуд, а ты сколько лет на пхп пишешь?

Пожалуйста, авторизуйтесь, чтобы написать комментарий!