Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: пробелы
 
 автор: moonfox   (17.06.2014 в 16:34)   письмо автору
 
 

как определить что в строке нет ничего кроме пробелов?
то есть строка предполагает хоть 1 символ
и если этот символ не буква/цифра а пробел или множество пробелов - возвращало оповещение что нет букв/цифр в строке

  Ответить  
 
 автор: confirm   (17.06.2014 в 17:15)   письмо автору
 
   для: moonfox   (17.06.2014 в 16:34)
 

trim()

  Ответить  
 
 автор: moonfox   (17.06.2014 в 17:32)   письмо автору
 
   для: confirm   (17.06.2014 в 17:15)
 

ухтыжничегосибе)))))

  Ответить  
 
 автор: Igorek   (18.06.2014 в 10:22)   письмо автору
 
   для: moonfox   (17.06.2014 в 17:32)
 

Если это сарказм, то зря:
<?
if (!trim($s)) {
 
// только пробелы или пустая строка
}

  Ответить  
 
 автор: confirm   (18.06.2014 в 12:07)   письмо автору
 
   для: Igorek   (18.06.2014 в 10:22)
 

Лучше не так, ибо это же не ради интереса, а для дальнейшего использования:

<?
if($string trim($string)) {
    
//работаем с данными $string
} else //в обработчик ошибок

  Ответить  
 
 автор: moonfox   (18.06.2014 в 14:53)   письмо автору
 
   для: Igorek   (18.06.2014 в 10:22)
 

да. нет
я никогда не пользовался ф-цией этой
как то представлялось что она так работать не будет

  Ответить  
 
 автор: confirm   (18.06.2014 в 15:58)   письмо автору
 
   для: moonfox   (18.06.2014 в 14:53)
 

Все входные данные надо чистить от мусора и убирать нежелательное, и делать это до проверки соответствия условиям. И делается это тоже просто, функциями РНР:

<?
array_walk_recursive
($values, function(&$v) {
    
$v trim(stripslashes($v));
});

  Ответить  
 
 автор: Commander   (18.06.2014 в 08:11)   письмо автору
 
   для: moonfox   (17.06.2014 в 16:34)
 

<?php
$pattern 
"#^[\s]+$#";
if 
preg_match($pattern$str){
//Только пробелы
}

  Ответить  
 
 автор: confirm   (18.06.2014 в 12:05)   письмо автору
 
   для: Commander   (18.06.2014 в 08:11)
 

Пагубно для задач типа выше изложенной использовать preg_match.

  Ответить  
 
 автор: Commander   (18.06.2014 в 17:36)   письмо автору
 
   для: confirm   (18.06.2014 в 12:05)
 

Раздел форума как называется? Кроме того, trim() вы раньше меня предложили.

  Ответить  
 
 автор: confirm   (18.06.2014 в 18:20)   письмо автору
 
   для: Commander   (18.06.2014 в 17:36)
 

А что, если существует такой раздел, значит подобным и надо решать задачи эти? Раздел разделом, а голова на плечах должна быть, и она для того, чтобы не заниматься тем, чем не следует. Надо наоборот "гнать" из этого раздела, уж очень часто обращаются сюда тогда, когда этого совсем не требуется.

  Ответить  
 
 автор: Commander   (18.06.2014 в 19:53)   письмо автору
 
   для: confirm   (18.06.2014 в 18:20)
 

Я лично считаю так: если человек задал вопрос на этом форуме, значит ему требуется рег. выражение. И отвечаю соответственно. Потому что подноготная у вопроса может быть любая.

  Ответить  
 
 автор: confirm   (18.06.2014 в 20:01)   письмо автору
 
   для: Commander   (18.06.2014 в 19:53)
 

Ясно, только к чему тогда такое неудовольствие? У этого явления "подноготная" как раз из таких мелочей и складывается.

  Ответить  
 
 автор: moonfox   (18.06.2014 в 21:59)   письмо автору
 
   для: confirm   (18.06.2014 в 20:01)
 

если по существу
то хотелось бы получить регулярку по задаче
- убирать все пробелы и переводы строк с начала и сконца строки
- сводить количество пробелов между буквами к одному, чтоб не было СЛОВО 100500 пробелов СЛОВО
- разрешать вводить не более одного тире за раз

  Ответить  
 
 автор: confirm   (19.06.2014 в 04:45)   письмо автору
 
   для: moonfox   (18.06.2014 в 21:59)
 

- убирать по краям - trim
- убрать лишние в строке - preg_replace с паттерном '/\s{2,}/'
- разрешением ввода N-раз рег. выражения не занимаются

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

Удалять крайние пробелы может быть выгоднее сразу у всех принимаемых данных, так как не факт, что предстоит еще и последующая проверка, а хранить мусор нет нужды. Как предварительно удаляются крайние и слеши, я написал выше. Долбить этим каждое входное значение, зачем?

  Ответить  
 
 автор: moonfox   (19.06.2014 в 14:46)   письмо автору
 
   для: confirm   (19.06.2014 в 04:45)
 

я боюсь регулярок
очень боюсь (
уже лет 7 боюсь
все никак и ничерта в них не понимаю...
как к ним подойти???
читать много манов??

  Ответить  
 
 автор: Commander   (19.06.2014 в 19:06)   письмо автору
 
   для: moonfox   (19.06.2014 в 14:46)
 

Здесь где-то была книга по рег. выражениям. Я уже просил cheops'a дать ссылку на нее в другой теме, сам нашел (через яндекс, не помнил даже автора) - http://www.softtime.ru/info/fridl.php. Прочитайте книгу по ссылке - самое то по рег. выражениям, пригодится и в PHP, и для ЧПУ, да и вообще в любом языке есть средства для работы с рег. выражениями

  Ответить  
 
 автор: moonfox   (19.06.2014 в 19:10)   письмо автору
 
   для: Commander   (19.06.2014 в 19:06)
 

спс)

  Ответить  
 
 автор: Commander   (19.06.2014 в 07:05)   письмо автору
 
   для: confirm   (18.06.2014 в 20:01)
 

А с чего вы взяли, что я там неудовольствие выражаю? Я просто хотел повеселить форумчан примером идиотизма.

  Ответить  
 
 автор: confirm   (19.06.2014 в 07:18)   письмо автору
 
   для: Commander   (19.06.2014 в 07:05)
 

Да веселья в этом нет никакого, глупости в результатах работы, это не веселье, это наоборот печально. Вот чтобы не было таких глупостей, нужно понимание материала и использование его к месту. Иногда складывается впечатление, что начинающие представляют РНР как трех "китов": if...else, foreach и PCRE, и все, более ничего не существует. И если вместо того, чтобы начинающему дать понять, что он влез не туда, оказывать медвежью услугу, ну просит, почему бы и не показать, мы и будем порождать своими руками глупцов.

  Ответить  
 
 автор: Commander   (19.06.2014 в 19:46)   письмо автору
 
   для: confirm   (19.06.2014 в 07:18)
 

Ситуация даже хуже, чем вы описываете. В разработку (язык не поворачивается назвать это программированием) лезут все, кому не лень. Мне часто приходится дорабатывать сайты - такие перлы встречаются, что мама дорогая... Здесь уже был идиотизм с степени гуголплекс, мое счастье, что можно сразу сказать владельцу сайта о переделке с нуля.

Когда на форуме фрилансеров человек задает вопрос о магазине на джумле+виртумарт, который тормозит, когда на него закинули 5000 наименований, а дизайнерша, которая делает магазины на джумле, спрашивает его о том, отдельный IP у его хостинга или нет - не знаешь, плакать или смеяться. Реально, где-то на weblancer.net пару лет назад была такая тема - никак ее в поиске не могу найти.

Представляете, что подобные веб-мастера могут наворотить, если хоть чуть-чуть подучат PHP? У меня пару месяцев назад был случай, когда мне пришлось настраивать отправку почты на магазине на той же самой джумле. Там была форма заявки в боковой панели, форма заказа запчасти и еще одна простая форма. Я все мозги сломал, пытаясь найти, почему почта не приходит. Докопался аж до функций отправки почты в самой джумле. А тут гляжу - что-то похожее на проверку капчи в шаблоне %)! И что выяснилось? Почта отправляется прямо в шаблоне!!! Дурь несусветная.

Я вот вчера разговаривал с СЕОшником, который в нашей команде работает. Он точно также полез куда не следует. Хорошо еще хоть догадался у меня проконсультироваться, чтобы делов не наделать. Правда там его собственный проект.

Так уж лучше здесь помогать любому посетителю, которому хватило ума корректно вопрос задать, в надежде найти потенциально талантливого программиста - вдруг действительно новый cheops отыщется. А то если мы здесь каждого будем в мануал посылать, что выйдет? Отсюда любой новичок убежит, поскольку другие будут его оскорблять за неопытность. Я почему и ответил так резко в соседнем форуме. Уверен, КМВ точно также ответил бы.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования