[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Функция для удаления символов.
Страницы: 1, 2
Миша
Нужна функция что-бы удалить все символы, кроме букв. Есть ли такая?

_____________
Принимаю заказы, писать в ЛС
T1grOK
preg_replace

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Миша


// если всё в кодировке windows-1251
$result = preg_replace('/[^a-zа-яё]+/i', '', $text);

// или, если всё в кодировке UTF-8, добавить модификатор u
$result = preg_replace('/[^a-zа-яё]+/iu', '', $text);



Так? А если кодировка заранее неизвесна?

_____________
Принимаю заказы, писать в ЛС
Миша
И ещё эксперементируя выяснил, что если передать #, а после текст, то текста не будет. Видимо php принимает за комментарий? Как тогда быть?

_____________
Принимаю заказы, писать в ЛС
AllesKlar
обратный слеш перед спецсимволом
'\#'

_____________
[продано копирайтерам]
Миша
Цитата (AllesKlar @ 25.05.2014 - 12:40)
обратный слеш перед спецсимволом
'\#'

Согласен. Но пользователю не скажешь перед # ставь \


_____________
Принимаю заказы, писать в ЛС
Миша
Варианты, как на стороне сервера перед # ставить \

_____________
Принимаю заказы, писать в ЛС
BaNru
Как-то так?
http://codepad.org/C0ZDmxWN
Kopipaster
Цитата (Медведь @ 25.05.2014 - 10:45)
Нужна функция что-бы удалить все символы, кроме букв. Есть ли такая?

Зачем тебе?
Если пользователь ввёл:
<?php
$a="!@#$%^&*()_+::;/\\|";
//и надо вывести то:
echo htmlspecialchars($a);
//если ты кладёшь в базу то обрабатываешь
$b= mysql_real_escape_string(trim($a));
//и опять при выводе htmlspecialchars
?>
Игорь_Vasinsky
Цитата
trim($a)
\
зачем пробелы то вырезать? что за кощунство))

это нужно - когда нужно.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Миша
Цитата (BaNru @ 25.05.2014 - 18:14)
Как-то так?
http://codepad.org/C0ZDmxWN

Не понял..)
Мне нужно удалить все символы, потому-что потом GET будет именем поля в форме.
Замена не получается.

_____________
Принимаю заказы, писать в ЛС
twin
Медведь
Цитата
Мне нужно удалить все символы, потому-что потом GET будет именем поля в форме.
Не нужно тебе ничего удалять. Тебе наоборот нужно пропустить разрешенные, остальные нафиг. Иначе придется всю таблицу символов перечислять.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Миша
Цитата (twin @ 26.05.2014 - 09:59)
Медведь
Цитата
Мне нужно удалить все символы, потому-что потом GET будет именем поля в форме.
Не нужно тебе ничего удалять. Тебе наоборот нужно пропустить разрешенные, остальные нафиг. Иначе придется всю таблицу символов перечислять.

Полностью согласен, беру и делаю так:
$result = preg_replace('/[^a-zа-яё]+/i', '', $text);
но если теперь кто-то плохой вставит в форму #, то после # ничего не будет. Я подумал что это может быть php так обрабатывает строку и после # ничего. Заменой убрать её не получается, ну не могу я понять почему и как убить эту решётку))?

_____________
Принимаю заказы, писать в ЛС
Kopipaster
Цитата (Медведь @ 26.05.2014 - 17:45)
но если теперь кто-то плохой вставит в форму #, то после # ничего не будет. Я подумал что это может быть php так обрабатывает строку и после # ничего. Заменой убрать её не получается, ну не могу я понять почему и как убить эту решётку))?

Я всё таки не понимаю о чём речь.
$text ="Privet#22435676 !@#%^&*()_+Mir";
$result = preg_replace('/[^a-zа-яё]+/i', '', $text);
echo $result;
выводит PrivetMir
Миша
Цитата (Kopipaster @ 26.05.2014 - 17:59)
Цитата (Медведь @ 26.05.2014 - 17:45)
но если теперь кто-то плохой вставит в форму #, то после # ничего не будет. Я подумал что это может быть php так обрабатывает строку и после # ничего. Заменой убрать её не получается, ну не могу я понять почему и как убить эту решётку))?

Я всё таки не понимаю о чём речь.
$text ="Privet#22435676 !@#%^&*()_+Mir";
$result = preg_replace('/[^a-zа-яё]+/i', '', $text);
echo $result;
выводит PrivetMir

У меня после # идёт текст (например) и после решётки текст стирается.

_____________
Принимаю заказы, писать в ЛС
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.