PHP str_getcsv игнорирует кавычкиPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 PHP str_getcsv игнорирует кавычки

Сообщение Anonymous »


Мне нужно проанализировать такие строки, как k1=v1, k2=v2, ... kn=vn с основным разделителем (,) и разделителем-ключом-значением (=) могут различаться. Значения могут быть заключены в кавычки ("или ') и могут содержать основной разделитель в кавычках.

Поскольку в документации PHP я не увидел ограничений для такого рода использования, я нашел str_getcsv подходящим.

Но при первом тесте я обнаружил, что символ вложения был проигнорирован:

$ php -v PHP 8.1.2-1ubuntu2.14 (cli) (собран: 18 августа 2023 г., 11:41:11) (НТС) Авторские права (c) Группа PHP Zend Engine v4.1.2, авторские права (c) Zend Technologies с Zend OPcache v8.1.2-1ubuntu2.14, авторские права (c), Zend Technologies $ php -а Интерактивная оболочка php > $S2 = 'name=ABCD, value=17.3, autoID, onclick="getinfo($this, 99);"'; php > var_dump($S2); string(60) "name=ABCD, value=17.3, autoID, onclick="getinfo($this, 99);"" php > var_dump(str_getcsv($S2)); массив (5) { [0]=> строка (9) «имя = ABCD» [1]=> строка(11) "значение=17,3" [2]=> строка (7) «автоID» [3]=> string(23) " onclick="getinfo($this" [4]=> строка(6) " 99);"" } php > $S3 = 'name=ABCD, value=17.3, autoID, onclick=|getinfo($this, 99);|'; php > var_dump($S3); string(60) "name=ABCD, value=17.3, autoID, onclick=|getinfo($this, 99);|" php > var_dump(str_getcsv($S3, ',', '|')); массив (5) { [0]=> строка (9) «имя = ABCD» [1]=> строка(11) "значение=17,3" [2]=> строка (7) «автоID» [3]=> string(23) " onclick=|getinfo($this" [4]=> строка(6) " 99);|" } Строка в кавычках "getinfo($this, 99);" включает основной разделитель (,) и поэтому разделяется на два элемента без учета кавычек. Использование другого символа вложения ничего не меняет.

Поэтому мне интересно, является ли это ошибкой, неправильным использованием или мое предположение о том, что str_getcsv подходит для этой операции, неверно. Любая помощь и комментарии приветствуются.

Проверено в разных средах PHP, результат один и тот же
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»