«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2019/04/16 06:33:09  №1382148 1
Анонче, подскажи, а то я застрял. Делаю грамматического нациста, хочу сделать проверку по отсутствию знака препинания. Идея такая я делаю preg match all с preg set order< затем дампую. 0й массив. Но как мне ограничить регулярку так, что бы выводилась вся фраза с ошибкой, а не кусок? Я думал таком варианте
'/s|^. - это либо символ начала строки либо ограничивающий пробел.
\.\S - условие замены
.\s|.*\. - ограничение по пробелу или концу строк
Я хочу что бы сделав дамп 0го массива вылезли все ошибки. Но почему - то даже правильные последовательности тоже выдаются. Где я перемудрил? По возможности намекните т к хочу допереть сам
Ответы: >>1394734
Аноним 2019/05/06 05:56:56  №1394734 2
>>1387455

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

Для Постгреса, кстати, есть русский перевод мануала.

>>1386695

Ты передаешь неправильные параметры наверно, либо не тот ид телефонии, либо не то число часов. Или передаешь его строкой может быть.

>>1382988

php-fpm это менеджер процессов PHP, к которому nginx обращается по протоколу FastCGI. Он запускается как отдельная от nginx программа. Apache тоже поддерживает FastCGI и может с ним взаимодействовать.

Обычно схема такая: запросы идут на нгинкс, статические файлы он отдает сам, динамические запросы к страницам сайта передает в php-fpm, который выполняет php-скрипт.

mod_php - это интерпретатор PHP, оформленный в виде модуля к Апачу. Он загружается внутрь Апача и естественно, без Апача работать не может.

>>1382148

Это можно сделать, но тут сложность в том, что он не будет искать ошибки в захваченной фразе. Ну, например, если мы хотим захватить ближайшее слово справа и слева, то можем написать:

\S+\s*...\s*\S+

Но тогда в захваченном слове не будут искаться ошибки, так как preg_match_all() не проходится повторно по уже найденной подстроке.

Другой вариант - использовать опцию PREG_MATCH_OFFSET_CAPTURE, которая сохраняет для каждого найденного вхождения позицию в байтах от начала строки. Эту позицию преобразовываем в символы и берем например текст, по 20 символов в обе стороны от места ошибки.

Ну и покажи код, чтобы было можно что-то еще добавить.