| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Тексты > Удалить всё кроме.. |
| Автор: Gold Dragon 28.3.2011, 17:55 |
| Помогите написать регулярку. Мне нужно удалить из строки всё кроме определённого набора символов. Символы в основном кириллица и utf-8. |
| Автор: skyboy 28.3.2011, 18:12 | ||
|
| Автор: Gold Dragon 28.3.2011, 18:22 | ||
тогда я ничего не понимаю... у меня что-то такое
и не работает :( Добавлено через 3 минуты и 52 секунды если что, то весь проект в кодировке utf-8 |
| Автор: bars80080 28.3.2011, 18:58 | ||
|
| Автор: Gold Dragon 28.3.2011, 19:03 |
| bars80080, ну это понятно что можно сократить... Но не работает... зараз... |
| Автор: ksnk 28.3.2011, 19:09 | ||
? |
| Автор: Gold Dragon 28.3.2011, 19:24 |
| ну наконец-то заработало ksnk, а поясни все эти слеши |
| Автор: bars80080 28.3.2011, 19:40 |
ограничители регулярного выражения. использовать можно и другие символы. просто с одного выражение открывается, а вторым (не заэкранированным) закрывается |
| Автор: Gold Dragon 28.3.2011, 20:07 |
| так, теперь чтобы до конца самому разобраться (может когда-нибудь научусь составлять регулярки - всё выражение помещается в ограничители / - в квадратных скобках мы перечисляем набор символов - через тире прописываем последовательности - обратным слэшем экранируем тире которое тоже будет в наборе и которе воспринимается как спецсимвол. - впереди галка означает отрицание... - после ограничителей ставим модификатор, который говорит что строки в кодировке utf-8 Так? |
| Автор: ksnk 28.3.2011, 20:14 |
нет. первый встретившийся символ является ограничителем (хм... м.б. непробельный?). Хотя для некоторых языков (JavaScript) - только прямой слеш. Остальное, в основном, верно. |
| Автор: Gold Dragon 28.3.2011, 20:18 |
| т.е. если я ставлю / то понимается то [ является ограничителем? Или как? и тогда в конце /u просто говорит что это модификатор? |
| Автор: ksnk 28.3.2011, 20:30 | ||
это все одинаковые конструкции. первый встретившийся символ будет ограничителем. Первый незаслешенный органичитель будет означать конец регулярного выражения. Все следующие за ним символы являются модификаторами. |
| Автор: Gold Dragon 28.3.2011, 20:38 |
| во!!! теперь стало понятно наконец-то.. ещё раз спасибо |
| Автор: skyboy 28.3.2011, 20:56 |
| поспешл - людей насмешил :( |
| Автор: Gold Dragon 29.3.2011, 08:03 |
| а ещё маленький вопросик по теме... вот после всего этого у меня остаются только то что мне нужно и в том числе пробелы. Возможно ли в этом правиле предусмотреть чтобы последовательность пробелов преобразовывалась в один? |
| Автор: ksnk 29.3.2011, 08:39 | ||
в этом - нельзя. Можно в следующем.
Можно, конечно, передать в preg_replace массив регулярок и массив замен, но imho, пострадает читабельность кода, а эффективность вырастет незначительно. |
| Автор: Gold Dragon 29.3.2011, 08:46 |
| спасибо, почему-то я так и подумал |