@phpclubru

Страница 827 из 956
Dziro
04.03.2019
18:35:37
еси строка в утф например то strlen посчитает 1 символ как 4

Aleksandr
04.03.2019
18:36:41
еси строка в утф например то strlen посчитает 1 символ как 4
Спорное заявление. Во-первых ты не указал какая конкретно кодировка юникода. Во вторых они чаще всего с еременной длинной.

Google
Dziro
04.03.2019
18:37:12
примерно 4

Aleksandr
04.03.2019
18:37:47
примерно 4
Если мы возьмем utf-8 и русские буквы, то будет 2 байта. Если английские - 1 байт.

dypa
04.03.2019
20:00:53
mb_strlen - количество символов, strlen - байт
по этой логике strlen должен называться bytelen.

Aleksandr
04.03.2019
20:01:39
по этой логике strlen должен называться bytelen.
Окей. strlen считает количество символов, рассматривая строку в однобайтной кодировке. Лучше стало?

по этой логике strlen должен называться bytelen.
Когда эту функцию писали юникода еще не было. А дальше опять работает обратная совместимость.

Поэтому сейчас он считает на самом деле байты, а не символы.

dypa
04.03.2019
20:04:29
Поэтому сейчас он считает на самом деле байты, а не символы.
strlen — Get string length, http://php.net/manual/en/function.strlen.php

Aleksandr
04.03.2019
20:05:38
strlen — Get string length, http://php.net/manual/en/function.strlen.php
strlen() returns the number of bytes rather than the number of characters in a string. С той-же страницы но чуть ниже

Может хватит?

dypa
04.03.2019
20:09:57
Может хватит?
какое открытие что строки состоят из байтов...

Aleksandr
04.03.2019
20:11:08
какое открытие что строки состоят из байтов...
Я вообще не понимаю, к чему ты приковался. В документации указано, что strlen возвращает количество байт. Тебе что-то в этом не понравилось.

garrip91
04.03.2019
20:11:51
Люди, кто поможет разобраться в 1-м небольшом участке кода на php?

Google
Виталя
04.03.2019
20:23:14
Всем привет Кто использовал PhpWord для конвертации docx to html ? Не отображаются картинки в html документе, кто подскажет в чем может быть трабл

dypa
04.03.2019
20:24:54
Я вообще не понимаю, к чему ты приковался. В документации указано, что strlen возвращает количество байт. Тебе что-то в этом не понравилось.
ты понимаешь что например filesize тоже возвращает байты? php-src пробовал смотреть? считается количество байт отводимых под каждый символ. нульбайт отлично подходит под твое определение "количество байт".

Aleksandr
04.03.2019
20:32:51
byte !== char так понятнее?
учитывая что в рамках php нет таких типов как byte и char нет

dypa
04.03.2019
20:36:03
учитывая что в рамках php нет таких типов как byte и char нет
конечно нет, но мы же говорим грамотно и понимая что такое ZVAL.

Aleksandr
04.03.2019
20:37:17
конечно нет, но мы же говорим грамотно и понимая что такое ZVAL.
Короче, начинает надоедать. Ты согласен с тем, что strlen возвращает количество байт в строке или нет?

Aleksandr
04.03.2019
20:41:01
в строке нет байт, есть символы!
Мда. В строке "привет", если файл в utf-8 какой первый символ? И сколько в нем символов?

dypa
04.03.2019
20:42:21
Мда. В строке "привет", если файл в utf-8 какой первый символ? И сколько в нем символов?
а теперь мы приходим к тому, что в пхп есть ошибка в реализации strlen в работе с многобайтовыми кодировками... дальше есть на выбор различные хаки такие как, mb_strlen и iconv_strlen которые опять же не считают байты

Aleksandr
04.03.2019
20:43:17
Ладно, теперь точно надоело.

dypa
04.03.2019
20:44:22
печалька :(

ustasby
04.03.2019
20:53:51
а теперь мы приходим к тому, что в пхп есть ошибка в реализации strlen в работе с многобайтовыми кодировками... дальше есть на выбор различные хаки такие как, mb_strlen и iconv_strlen которые опять же не считают байты
да не прав ты, нет там никакой ошибки, strlen возращает количество байт, посмотри исходник. А вот функции mb* уже с учетом кодировки, так что все норм вроде. Никто в здравом уме уже strlen не пользуется.

ustasby
04.03.2019
20:57:38
покажи ссылку ) символы считаются, которые состоят из байт.
на исходник? даже в документации написано strlen() returns the number of bytes rather than the number of characters in a string. зачем ты придумываешь то ))

ustasby
04.03.2019
21:08:04
на исходный код пхп.
zend_builtin_functions.c ZEND_FUNCTION(strlen)

на исходный код пхп.
https://github.com/php/php-src развлекайся

на исходный код пхп.
https://github.com/php/php-src/blob/db0079023421b8048f090ee04adb992e09132553/Zend/zend_types.h#L772 вот что бы ты долго не искал

Google
dypa
04.03.2019
21:20:13
https://github.com/php/php-src развлекайся
до zend_string еще долго ждать???

ustasby
04.03.2019
21:20:37
идет вызов макроса RETVAL_LONG(s1_len); потом ZVAL_LONG, то есть именно байты, поправьте если я не прав

dypa
04.03.2019
21:23:34
насколько я знаю - вызывается https://phpinternals.net/docs/zstr_len

ustasby
04.03.2019
21:24:25
и там есть интересное условие, если это не строка, то RETVAL_LONG(u_countChar32(s1.u, s1_len));, как раз в юникоде, может с 6 версии осталось или как это работает

насколько я знаю - вызывается https://phpinternals.net/docs/zstr_len
причем тут это, мы про strlen говорим? я конкретно тебе показал в исходнике текущем

ZEND_FUNCTION(strlen) { zstr s1; int s1_len; zend_uchar s1_type; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "t", &s1, &s1_len, &s1_type) == FAILURE) { return; } if(s1_type == IS_STRING) { RETVAL_LONG(s1_len); } else { RETVAL_LONG(u_countChar32(s1.u, s1_len)); } }

хотя недавно было еще

ZEND_FUNCTION(strlen) { char *s1; int s1_len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &s1, &s1_len) == FAILURE) { return; } RETVAL_LONG(s1_len); }

короче может уже поддержку utf вводят

хотя если не ошибаюсь то s1_len это количество байт в параметре

garrip91
04.03.2019
22:12:08
Люди, почему такой код выдаёт трушки? как такое возможно? Ведь я закомментировал всю функцию

<?php // Функция "isCorrect($param)" (для проверки корректности строки согласно условию), в которой параметр "$param" будет использоваться в качестве примера: /* function isCorrect($param) { $symbols = array('[' => ']', '{' => '}', '(' => ')'); $all = strlen($param); for($i=0;$i<$all;$i=$i+2){ $first = $param[$i]; $symbol = $symbols[$first]; if($symbol != $param[$i+1]) return false; if($symbol == $param[$i+1]) continue; } return true; } */ var_dump(assert(isCorrect('') === true)); var_dump(assert(isCorrect('()') === true)); var_dump(assert(isCorrect('{(})[]') === false)); ?>

Terminator
05.03.2019
05:16:46
Юрий Зрянин будет жить. Поприветствуем!

Игорь
05.03.2019
09:42:25
всем привет, подскажите кто знает, проверяем права на запись в папки через is_writable, возвращает false, на сервере nginx, работает от имени nginx, права на папки пробуем ставить 777 но нет результата

Игорь
05.03.2019
09:46:25
по всей ветке начиная с папки домена пробовали ставить 777

Terminator
05.03.2019
09:48:17
@sokhranov будет жить. Поприветствуем!

Pavel
05.03.2019
10:05:39
по всей ветке начиная с папки домена пробовали ставить 777
А может ФС примаунчена только для чтения

Игорь
05.03.2019
10:07:36
думаю нет, а можно это как то проверить?

Google
Pavel
05.03.2019
10:20:23
Да как то можно. Кажись /etc/fstab

Dmitry
05.03.2019
10:25:21
Так нужно не "начиная с папки домена", а начиная от корня фс

Vladimir
05.03.2019
10:33:19
Ребята, привет, помогите разобраться, уже третий час бьюсь. Есть строка https://pastebin.com/zwi6NP7H не могу её распарсить.

json_decode возвращает null

понятно что формат неверный, у меня на JS все норм парсится, а хочу в контроллере сделать кое-какие манипуляции, и никак не выходит

Dmitry
05.03.2019
10:39:04
попробуй trim сказать сначала на строку

и посмотри ошибку json декода

Vladimir
05.03.2019
11:54:12
и посмотри ошибку json декода
JSON_ERROR_SYNTAX синтаксическая ошибка, но вот что странно - пробую эту же строку проверить на валидность - все норм. И пробую в sandbox тоже все норм

Pavel
05.03.2019
11:56:10
Да валидная эта строка. А ты пытаешься разкодить какую-то другую.

Vladimir
05.03.2019
11:58:14
Да валидная эта строка. А ты пытаешься разкодить какую-то другую.
ту же самую, я в лог её сначала вывожу, а потом в лог вывожу json_decode

Vladimir
05.03.2019
12:00:38
ты сначала сделай манипуляции с данными, а потом это в жсон пихай
эти данные приходят в таком формате, я их только обрабатываю. Мне не нужно в JSON пихать, нужно вытащить из него

Алексей
05.03.2019
12:01:48
как ты ее получаешь ?

Сасный
05.03.2019
12:02:56
ту же самую, я в лог её сначала вывожу, а потом в лог вывожу json_decode
показывай как ты получаешь эту строку и как пытаешься разобрать

телепатов тут нет

Vladimir
05.03.2019
12:06:09
показывай как ты получаешь эту строку и как пытаешься разобрать
она у меня в базе хранится, я её в лог вывожу выглядит все так как на скрине

Сасный
05.03.2019
12:06:35
Vladimir
05.03.2019
12:07:35
https://pastebin.com/R8S1kVjj

скриншот не могу скинуть, логи тоже в пастбин вложил

https://pastebin.com/0nGvjruc

Google
Vladimir
05.03.2019
12:11:48
оппа, мне тут одна штука не нравится. У меня в БД строка выглядит по другому

[{&quot;id_option&quot;:17,&quot;excludes&quot;:[

Сасный
05.03.2019
12:13:04
http://sandbox.onlinephpfunctions.com/code/d51284c4b6e986bf8951073cc32fdb509b0f6bc2

Строка твоя валид, если выглядит ровно так как показываешь. А в базе у тебя экранированный вариант лежит.

Экранируй кавычки взад и потом разбирай

Vladimir
05.03.2019
12:15:30
Экранируй кавычки взад и потом разбирай
каким методом такое можно сделать?

Алексей
05.03.2019
12:28:09
тии пашютииил))) ?

Vladimir
05.03.2019
12:34:42
тии пашютииил))) ?
к сожалению нет.

я знаю что перед кавычками обратный слеш ставится

Pavel
05.03.2019
12:39:54
Ну вот, я же говорил - не с той строкой ты связался ))

Неправильно ты работаешь с базой, убери лишние htmlspecialchars()

Алексей
05.03.2019
12:40:37
удалять

то есть сначала преобразовать в символы - потом функцией обратного экранирования (извиняюсь)

? пробовал

Sergey
05.03.2019
13:54:45
Добрый день, ищу опытного PHP разработчика..... https://phpclub.ru/talk/threads/%D0%A2%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D1%82%D1%81%D1%8F-middle-php-developer-%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE-20-40-%D1%87%D0%B0%D1%81%D0%BE%D0%B2-%D0%BD%D0%B5%D0%B4%D0%B5%D0%BB%D1%8E.85796/

Pavel
05.03.2019
14:01:04
Как это никаких фреймворков? ?

Страница 827 из 956