19 Апрель 2024, 04:01:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости:
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Наш любимый PHP  (Прочитано 12829 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ray
Старожил
*****

Бонус: +3/-0
Offline Offline

Сообщений: 495


Researcher


Просмотр профиля
« : 03 Июнь 2009, 07:21:22 »

Язык PHP - классный, быстроразвивающийся и просто обалденный язык.
Иногда в нем можно встретить такие вещи,которыми он может действительно удивить.

В одном из скриптов php встретил такую вот конструкцию:
Цитировать

<?php if (....): ?>
<li>
  .....
</li>


Сразу не въехал, начал искать соответствующее продолжение.
Я-то думал, что это часть конструкции вида
Код:
 if(a>b)?a:b;
смутило отсутствие "?" на месте ":".
Каково же было мое удивление, когда немного ниже я увидел это:
Код:
<?php endif ?>
Вообще не понял, что это за бейсикоподобные выражения в php.
Полез в документацию и вот, что я там нашел:

Alternative syntax for control structures
PHP offers an alternative syntax for some of its control structures;
namely, if, while, for, foreach, and switch. In each case, the basic
form of the alternate syntax is to change
the opening brace to a colon (:) and the closing brace to endif;,
endwhile;, endfor;, endforeach;, or endswitch;, respectively.

Код:
<?php if ($a == 5): ?>
A is equal to 5
<?php endif; ?>

Оказывается php позволяет заменять открывающую фигурную скобку на двоеточие,
а закрывающую на endif;,endwhile;,endfor;,endforeach и т.д.
Интересно только, для кого сделана эта возможность.. для тех кто перешел
на ПХП с бейсика? Остается только догадываться.
Вот такой вот он разносторонний PHP...
« Последнее редактирование: 29 Июнь 2009, 03:50:03 от Ray » Записан

Одна голова - хорошо, а четыре руки быстрее!(с)
Прораб
Комментатор
******

Бонус: +2/-0
Offline Offline

Сообщений: 579


Сомневающийся


Просмотр профиля WWW
« Ответ #1 : 03 Июнь 2009, 10:48:11 »

для кого сделана эта возможность сказать точно не могу, но мне нравится возможность выбирать стиль программирования ))
Записан

(http://viejochoto.com.ar)
Жизнь ударяет Вас в лоб только тогда, когда Вы не замечаете ее пинков под зад
Ray
Старожил
*****

Бонус: +3/-0
Offline Offline

Сообщений: 495


Researcher


Просмотр профиля
« Ответ #2 : 03 Июнь 2009, 11:34:21 »

Да. Уж чего-чего, но гибкости у PHP хоть отбавляй.
Чем глубже начинаешь копать, тем больше начинаешь понимать, насколько гибким является этот язык!

« Последнее редактирование: 29 Июнь 2009, 11:26:59 от Ray » Записан

Одна голова - хорошо, а четыре руки быстрее!(с)
Ray
Старожил
*****

Бонус: +3/-0
Offline Offline

Сообщений: 495


Researcher


Просмотр профиля
« Ответ #3 : 26 Июнь 2009, 07:01:04 »

Не получается сделать одну штуку..
Есть, например, строка, из которой я хочу достать двоеточие ":"
Делаю так:
[test]



[test]

Из документации по PHP:
Цитировать
PREG_SPLIT_DELIM_CAPTURE - В случае, если этот флаг указан, выражение, заключенное в круглые скобки в разделяющем шаблоне, также извлекается из заданной строки и возвращается функцией. Этот флаг был добавлен в PHP 4.0.5.
Почему нужное мне двоеточие не извлекается.. никак не могу понять..
« Последнее редактирование: 16 Июль 2009, 20:26:48 от Ray » Записан

Одна голова - хорошо, а четыре руки быстрее!(с)
Ray
Старожил
*****

Бонус: +3/-0
Offline Offline

Сообщений: 495


Researcher


Просмотр профиля
« Ответ #4 : 26 Июнь 2009, 11:33:04 »

Я оказывается неправильно круглые скобки ставил )))
Теперь достаются все сплиттеры.Но!
1) Я хочу доставать только двоеточия.
2) Почему достается только одно двоеточие.. квантификатор с двойкой после него стоит, а достается только одно двоеточие.

Цитировать
$aElements = preg_split("/([:{2}\s,;\'\"\.()])+/", $string, -1, PREG_SPLIT_DELIM_CAPTURE);
Записан

Одна голова - хорошо, а четыре руки быстрее!(с)
Ray
Старожил
*****

Бонус: +3/-0
Offline Offline

Сообщений: 495


Researcher


Просмотр профиля
« Ответ #5 : 26 Июнь 2009, 12:18:53 »

Во! Могучий PHP!
Заработало :)
Цитировать
$aElements = preg_split("/[\s,;'\"\.]+|(\(\))|(:{2})/", $string, -1, PREG_SPLIT_DELIM_CAPTURE+PREG_SPLIT_NO_EMPTY);
Интересно, как  парсер пхп пропустил вот такую [()] конструкцию...
Записан

Одна голова - хорошо, а четыре руки быстрее!(с)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by SMF 1.1.9 | SMF © 2006-2008, Simple Machines LLC