«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Оформляйте код Аноним 2019/02/24 03:10:34  №1353706 1
grammar.png (56, 500x644)
644x500
Не знаю, читает ли кто-то этот пост, но все равно напишу. Код нужно писать не как попало, а аккуратно и по правилам. Почему? Потому, что на неакуратно написанный код не хочется даже смотреть. Если каждый будет оформлять код как хочет, будет бардак.

Если тебе лень выравнивать код руками, закачай его на http://beta.phpformatter.com/ и нажми «format». Робот исправит выравнивание и отступы в мгновение ока (да, прогресс не стоит на месте). Если ты используешь мощную IDE вроде PhpStorm, там тоже есть функция форматирования кода.

Горячие клавиши для форматирования кода в разных IDE: https://gist.github.com/codedokode/8759492

Вообще, в PHP долгое время не было единого стандарта оформления кода, все писали как попало и было много бардака, но сейчас дело лучше — есть стандарты PSR-1 и 2. Вот как надо оформлять код:

- переменные и функции пишутся с маленькой буквы, подчеркивание не используется, используется camelCase, пример: $x, $numberOfPeople, printResults()
- Название функции начинается с глагола, в стиле «сделайЧтоТо»
- не знаешь английский? Не беда, в 21 веке есть решение этой проблемы. Не пиши транслитом, открой лучше Гугл Транслейт или slovari.yandex.ru и найди название для переменной там
- в именах классов используется CamelCase, первая буква большая, «_» может использоваться
- мы предпочитаем подстановку переменных вместо конкатенации строк: "I am $age years old" — хорошо, 'I am ' . $age . ' years old' — плохо из-за обилия точек и кавычек
- мы используем для отступов 4 пробела (можно настроить редактор, чтобы при нажатии Tab он вставлял 4 пробела)

Вот ссылка на стандарты, где все это описано подробнее и даны примеры оформления:

PSR-1: https://github.com/samdark/fig-standards-ru/blob/master/accepted/ru/PSR-1-basic-coding-standard.md
PSR-2: https://github.com/samdark/fig-standards-ru/blob/master/accepted/ru/PSR-2-coding-style-guide.md
Ответы: >>1379335
Аноним 2019/04/09 17:40:46  №1377929 2
Анончик помогающий с регулярками, глянь, где я не прав. https://ideone.com/S53UAG Решение я обосновал так, с начала я выкидываю к хуям все кроме цифр. Теперь нам не принципиально что в начале, затем проверяем число знаков и наконец проверяем что в начале 7 или 8, потом сразу же меняем 7 на 8мь. Я не могу понять почему на этапе проверки первых цифр происходит ошибка.
Ответы: >>1378083 >>1378169
Аноним 2019/04/09 19:18:46  №1377979 3
>>1353705 (OP)
Ох уж эта ебля с настройками, не могу направлять запросы через ФронтКонтроллер. Если на прямую к нему обращаться, то создает роутер и выполняет функцию из класса роутера. Чего я только не делал. И закидывал в стандартный путь, и новый адресс делал, и разные htaccess создавал, и переустанавливал ос. Уже не понимаю куда смотреть.
php7.2 Апач2.4 на виртуалке ubuntu 18.04.
Это в .htaccess:
"AddDefaultCharset utf-8

RewriteEngine on
RewriteBase /
RewriteRUle ^(.*)$ index.php"
Ответы: >>1378163 >>1378169
Аноним 2019/04/10 05:37:31  №1378169 4
>>1377979

А в чем проблема? В том, что не вызывается index.php?

Для начала проверь, включено ли в конфиге Апача выполнение htaccess:

- https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride
- https://www.linode.com/docs/web-servers/apache/how-to-set-up-htaccess-on-apache/

Не забудь, что после изменения конфига надо перезапустить Апач.

Далее, глянь в лог ошибок веб-сервера (/var/log/apache2 или /var/log/httpd). Посомтри, нет ли там чего странного.

>>1377929

Там в начале может быть либо +7, либо 8. Если просто 7 или +8 - то это ошибка. Также, выкидывать лучше не все, а только пробелы, скобки, минусы. Ну а еще лучше все же написать полноценную регулярку для проверки:

- в начале идет 8 или +7
- затем выражение (одна цифра, за ней любое число скобок, минусов, пробелов), которое повторяется 11 раз

Далее, у тебя ошибки в коде:

> \tif (mb_substr ($clearNum,0,1)=='/7|8/'){

Знак "равно" просто делает посимвольное сравнение, он не интерпретирует выражение как регулярку. Тебе тут нужен preg_match.
Ответы: >>1378186 >>1378542
Аноним 2019/04/10 16:41:58  №1378542 5
Ответы: >>1378586 >>1380459
Аноним 2019/04/10 18:01:45  №1378586 6
>>1378542
Буквы-флаги. В начали урока по регуляркам. Вместо /[a-zA-Z]/
можно написать /[a-z]/i
Если используешь русские буквы в выражении - ставь флаг 'u'.
/[а-яё]/iu
Так же у тебя по условию нужно проверить является ли строка номером. У тебя она является номером, хотя содержит "позвать Люсю".
Ответы: >>1378663
Аноним 2019/04/10 18:44:18  №1378663 7
>>1378586
Окей понял. За флаги спасибо, а то только через 101 проверил, а там автоматом проверяется. Перепсал с первичной проверкой любого текста. Но теперь почему-то выражение принимается в любом случае вне зависимости от того есть в нем буквы или нет (я писал только русские). http://sandbox.onlinephpfunctions.com/code/cce3879a8929314360111bd939069d09b7020410
Ответы: >>1378756 >>1380459
Аноним 2019/04/10 19:28:37  №1378756 8
>>1378663
Есть несколько моментов:

-в PHP есть функция preg_match($regexp, $text, $match). Она принимает на вход регулярку, текст и пустой массив. Она проверяет, есть ли в тексте подстрока, соответствующая данному шаблону и возвращает 0, если нет, или 1, если она есть.
If (preg_match('/[a-z]/',$text)), если функция найдет что нибудь по регулярному выражению - вернет 1. В обратном же случае вернет 0.
if (1) - Правда, идем дальше
if (0) - Ложь, переходим к Else.

-https://regex101.com/r/qF7vT8/3
Видишь, твоё регулярное выражение не очень то и работает. Должны светиться только ВСЕ правильные номера.

-Читай внимательнее уроки и задачки.

-Сделай сначала первую часть задания, где программа должна из массива номеров выдавать только правильные, а только потом преступай к их форматированию
Ответы: >>1378833
Аноним 2019/04/10 20:46:02  №1378833 9
Ответы: >>1378889
Аноним 2019/04/10 21:52:59  №1378889 10
>>1378833
А теперь сделай чтобы скрипт массив номеров проверял. Исходник массивов в задании есть.
Ответы: >>1379314
Аноним 2019/04/11 16:36:33  №1379314 11
>>1378889
Сделал, глянь, https://ideone.com/v2XnwF. Дуболомно, но пашет. Я сейчас кстати сам с себя проиграл, половина номеров повторяются, а я думал, что один и тотже в цикле идет
Ответы: >>1379319 >>1380458
Аноним 2019/04/11 16:49:32  №1379319 12
Ответы: >>1379321 >>1379335
Аноним 2019/04/11 17:15:07  №1379335 13
>>1379319
Раз все работает - можешь дальше задачки решать. Я сам только учусь, так что могу подсказать только то, что сильно выделяется. Например "грамматика", если ее можно так назвать
Вот как тут >>1353706 пытайся делать. Скобки, пробелы в блоках.
Чтобы код был более правильно оформлен
Ответы: >>1379355
Аноним 2019/04/11 17:42:46  №1379355 14
>>1379335
Согласен, но со скобками пришлось так сделать т к я изначально накосячил с ними и подбивал куда нужно, спасибо тем не менее