PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (8): [1] 2 3 4 5 6 7 8 »

> Найдено сообщений: 117
Perun Отправлено: 27 Февраля, 2021 - 22:42:14 • Тема: Как свести условия в одно РВ? • Форум: Регулярные выражения

Ответов: 6
Просмотров: 1633
dcc0 пишет:
Попробую перевести в human readable: отрицание трёх слова, затем ваше правило

не совсем праильно.

РВ должно обнаруживать любую последовательность только из букв [a-zA-Z]
кроме целых слов: wordone, wordtwo и wordthree

например: входная строка -> есть совпадение или нет

wordonet -> true
networdone -> true
12test -> false
wordtwo -> false
testwordonetest -> true
wordonewordtwo -> true
word/three -> false
wordone12 -> false
qwertY -> true
a -> true
000 -> false
/ -> false
AAZZ -> true
Perun Отправлено: 22 Февраля, 2021 - 17:58:33 • Тема: Как свести условия в одно РВ? • Форум: Регулярные выражения

Ответов: 6
Просмотров: 1633
Похоже, без захвата это не делается, оставил пока так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. "[+^(](wordone|wordtwo|wordthree)\("
  3.  


Из той же оперы, регулярка ищет вхождение. которого в строке быть не должно:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. ".*[a-zA-Z|0-9]+\(.*"
  3.  


как тут исключить (wordone|wordtwo|wordthree)?
Т.е. эти слова могут быть перед открывающей скобкой
Как это исключение добавить в набор?
Perun Отправлено: 22 Февраля, 2021 - 15:46:23 • Тема: Как свести условия в одно РВ? • Форум: Регулярные выражения

Ответов: 6
Просмотров: 1633
Можно ли отловить одним рв без захвата?

^wordone|wordtwo|wordthree(
\^wordone|wordtwo|wordthree(
+wordone|wordtwo|wordthree(
(wordone|wordtwo|wordthree(


Первый вариант- ^ - это с начала строки
Нужно отлавливать только слово. Либо wordone, либо wordtwo либо wordthree. Без скобок и операторов. Это слово может быть только в начале или в середине строки.
Perun Отправлено: 15 Февраля, 2021 - 14:40:29 • Тема: Как разобрать математическое выражение • Форум: Регулярные выражения

Ответов: 5
Просмотров: 1599
А можно ли исходное выражение проверить с помощью РВ?
Условий получается очень много и сложных. Похоже на что то нереальное)

-В начале выражения может быть знак минус, может и не быть
-Любой операнд выражения может быть или переменой или константой
-Скобки могут быть в любом месте выражения.
-В конце/начале выражения не должно быть оператора кроме + или - в начале
-В середине выражения не должно идти подряд несколько операторов
-Скобки должны соответствовать открывающие закрывающим

Или это все нужно отдельно обрабатывать после разбиения на лексемы? Или делать отдельно проверку на соответствие каждому граничному условию?
Самая сложная часть- скобки..
Perun Отправлено: 11 Февраля, 2021 - 11:17:28 • Тема: Как разобрать математическое выражение • Форум: Регулярные выражения

Ответов: 5
Просмотров: 1599
Да, спасибо.
Perun Отправлено: 11 Февраля, 2021 - 08:41:48 • Тема: Как разобрать математическое выражение • Форум: Регулярные выражения

Ответов: 5
Просмотров: 1599
dcc0 пишет:
Что-то типа такого?

Почти..
Все лексемы должны быть в одном одномерном массиве и идти подряд, как они идут в выражении. Вместо одной лексемы *(-, должно быть три разных.

Т.е. должно быть:
[
ab,
+,
4,
*,
(,
-,
x,
-,
222,
*,
b,
),
+,
cbd,
]
Perun Отправлено: 10 Февраля, 2021 - 19:53:34 • Тема: Как разобрать математическое выражение • Форум: Регулярные выражения

Ответов: 5
Просмотров: 1599
Подсобите с регуляркой. Нужно математическое выражение, например:

аb+4*(-x-222*b)+cbd

разбирать так, чтобы отдельно в лексемы попадали символьные переменные(из одного и больше символов, без цифр), цифровые константы из одной и более цифр и отдельно +, -, * ,(,).

Выражения могут быть на входе абсолютно разные по длине, набору пересчисленных операторов, с разными константами и переменными.
Это вообще возможно? Или тут нужно писать свою функцию?
Perun Отправлено: 07 Ноября, 2020 - 16:09:30 • Тема: типы HTTP запросов • Форум: Вопросы новичков

Ответов: 6
Просмотров: 391
Если в контексте API, то понятно. Я пока до curl и REST API не дошел
Perun Отправлено: 07 Ноября, 2020 - 13:04:41 • Тема: типы HTTP запросов • Форум: Вопросы новичков

Ответов: 6
Просмотров: 391
Есть например post get, с ними мы работаем указывая явно. например в html форме. А в каком контексте понимать put, delete и как это применяется в контексте php? Где и как они явно указываются? Что значит, что post не идемпотентный? Например при отправке методом post мы отправляем данные на сервер. но создавать новую сущность или нет - определяет же логика в процессе обработки данных?
Perun Отправлено: 06 Октября, 2020 - 11:45:46 • Тема: Структура файлов/папок в проекте • Форум: Вопросы новичков

Ответов: 1
Просмотров: 263
Собственно, вопрос касается и организации структуры в проекте и на сервере.
Что означает общедоступность/публичность папки pulic_html? Кто имеет к ней доступ и на каких правах? Это настраивает пользователь домена или хостер выдает стандартные настройки без возможности правки?

Почему прикладные папки с картинками, js скриптами работают только изнутри папки public_html, а из того же уровня иерархии папок(если эти папки положить на одном уровне с пабликом) - нет?

Имеют ли принципиальное отличие ответы на эти вопросы в контексте локального и реального сервера?

В инструкциях некоторых хостеров написано, что нужно помещать файлы проекта в папку паблик. А как же сами файлы проекта с кодом? Или это зависит от политики настроек сервера, что он разрешает- только исполнение, или и чтение/запись?
Perun Отправлено: 18 Сентября, 2020 - 20:51:08 • Тема: логер • Форум: Вопросы новичков

Ответов: 2
Просмотров: 301
LIME пишет:
https://github.com/Seldaek/monolog
Видел, просматривал, но пропустил. Спасибо. посмотрю. Тут уже вижу, что есть хоть нормальная документация.
Perun Отправлено: 18 Сентября, 2020 - 18:23:37 • Тема: логер • Форум: Вопросы новичков

Ответов: 2
Просмотров: 301
Есть у меня простой класс - логер, который при любом исключении/ошибке пишет строчку в лог.файл. Все работает. Читал, что это дело - правильно - использовать стандартизированно.
Почитал документацию на prs/log. Непонятен сам принцип работы с библиотекой. Допустим, я хочу логировать ошибку 404, используя эту библиотеку. Как хотя бы теоретически это реализовать? Где должна быть описана логика - куда эти логи девать в итоге? Разные уровни, я вижу что реализуют разные методы интерфейса LoggerInterface. Нужно отнаследоваться от абстрактного класса логера, сделать свой класс и переопределить в нем методы интерфейса в зависимости от того, что нужно делать в результате ситуации по каждому из уровней?
Как хоть в общих чертах работать с этой библиотекой?
Perun Отправлено: 18 Сентября, 2020 - 18:09:58 • Тема: php-timer • Форум: Вопросы новичков

Ответов: 1
Просмотров: 276
Собственно вопрос про вышеуказанную библиотеку.

PHP:
скопировать код в буфер обмена
  1.  
  2. require __DIR__ . '/vendor/autoload.php';
  3.  
  4. use SebastianBergmann\Timer\ResourceUsageFormatter;
  5. use SebastianBergmann\Timer\Timer;
  6. $timer = new Timer;
  7. $timer->start();
  8. foreach (\range(0, 100000) as $i) {
  9.     // ...
  10. }
  11. print (new ResourceUsageFormatter)->resourceUsage($timer->stop());
  12.  


Тут цикл только для того, чтобы создать видимость какой-то работы?

Если нужно посмотреть, сколько времени и памяти потребляется, можно просто вместо этого цикла поместить код, который оценивается?

Или этот цикл для чего то другого?

Ну и про форму записи самого цикла. Первый раз вижу аргумент foreach со слешем. Это я так понимаю. равнозначно предварительной инициализации массива для перебора?:

PHP:
скопировать код в буфер обмена
  1.  
  2. $arr = range(0, 100000);
  3. foreach ($arr as $i) {
  4.     // ...
  5. }
  6.  

(Добавление)
И разница с этим непонятна:
Duration since PHP Startup (using unreliable $_SERVER['REQUEST_TIME_FLOAT'])
PHP:
скопировать код в буфер обмена
  1. require __DIR__ . '/vendor/autoload.php';
  2.  
  3. use SebastianBergmann\Timer\ResourceUsageFormatter;
  4.  
  5. foreach (\range(0, 100000) as $i) {
  6.     // ...
  7. }
  8.  
  9. print (new ResourceUsageFormatter)->resourceUsageSinceStartOfRequest();


Имеется в виду, что в первом случае исчисляется время от запуска $timer->start(); до конца скрипта, а во втором случае начало отмеряется от запуска скрипта?
Perun Отправлено: 24 Августа, 2020 - 18:01:52 • Тема: как понять замыкание • Форум: Вопросы новичков

Ответов: 7
Просмотров: 767
Строитель пишет:
Вероятно, чтобы было меньше коллизий с глобальными пользовательскими функциями.

С простыми реализациями понятно как работает. И это, я так понимаю - побочный эффект а не основное применение замыканий. Как вариант Улыбка

Встретил вот такой пример в сети без замыкания :
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. Class Cache
  3. {
  4.     static function set( $key, $value) {
  5.        //  код записи в кеш
  6.     }
  7.     static function get( $key ) {
  8.        // код чтения из кеша
  9.     }
  10. }
  11.  
  12. Class PostModel
  13. {
  14.     static function getList($dateCreated) {
  15.        // код получения постов с указанной даты
  16.     }
  17. }
  18.  
  19. $dateCreated = date('Y-m-d');
  20. $posts = Cache::get("posts_" . $dateCreated);
  21.  
  22. if( !$posts ) {
  23.    $posts = PostModel::getList($dateCreated);
  24.    Cache::set( "posts_" . $dateCreated , $posts);
  25. }
  26. ?>


И "тот же", но уже с замыканием:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $dateCreated = date('Y-m-d');
  3. $dbQueryCounter = 0;
  4. $fallback = function() use($dateCreated, &$dbQueryCounter) {
  5.    $dbQueryCounter++;   //счетчик импортирован в замыкание по ссылке
  6.    return PostModel::getList($dateCreated); // не забываем return
  7. };
  8. Cache::wrapper( "posts_" . $dateCreated , $fallback );
  9.  
  10. Class Cache
  11. {
  12.     static function set( $key, $value) {
  13.        //  код записи в кеш
  14.     }
  15.     static function get( $key ) {
  16.        // код чтения из кеша
  17.     }
  18.     static function wrapper( $key, Closure $fallback ) {
  19.         $data = self::get( $key );
  20.         if( !$data ) {
  21.             $data = $fallback(); // отложенное выполнение кода
  22.             self::set( $key, $data);
  23.         }
  24.         return $data;
  25.     }
  26. }
  27. ?>

Но я что-то не особо вижу "улучшения". Вернее, я не понимаю что стало лучше с использованием замыкания. Кроме того, стало больше кода, отсутствует один класс, и непонятно зачем появился счетчик.
Почитаю еще раз доку, и наверное таки отложу до лучших времен...
Perun Отправлено: 24 Августа, 2020 - 14:37:57 • Тема: как понять замыкание • Форум: Вопросы новичков

Ответов: 7
Просмотров: 767
Встречая в коде различные вариации замыканий я еще понимаю как работает, но сам вряд ли бы где использовал. Проблема в понимании начинается, когда используется передача параметров/замыкания используются чтобы передать их в качестве параметров другой функции.
Может кто подскажет как легче усвоить какой что ли ход мыслей при использовании замыканий..? Когда вот прям без замыканий никак
Документацию, кучу ссылок с примерами(многие из которых просто копирка с документации) в сети читал, пока не полегчало. Почти во всех примерах есть общее пояснение работы, но мало о том почему использовано именно замыкание, почему оно так необходимо в том или ином случае.

Страниц (8): [1] 2 3 4 5 6 7 8 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB