LINUX.ORG.RU
решено ФорумTalks

Я люблю тебя, PHP!

 ,


0

2

Написал серверное приложение на чистом С. Оно слушает порт, а PHP с ним соединяется и получает данные в json-формате.

Несколько часов убил на то, чтобы понять почему PHP не может сделать json_decode. Наконец, написал минимальный пример:

$ cat test.php 
<?php

$s1 = '["1", "2"]';
echo "1 ", var_dump(json_decode($s1)), "\n";

$s2 = $s1 . "\0";
echo "2 ", var_dump(json_decode($s2)), "\n";

$ php test.php
1 array(2) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
}

2 NULL

Да это же просто феерично! Я добавил нулевой символ в конец строки, а она перестала быть корректным json, твою мать! Я даже сравнил побайтово две строки, вывев их в файл: отличие только в \0 на конце.

Что за специалист писал такой парсер json-а в php?!

---

Отныне это тред о впечатлениях, оставшихся после встречи с неочевидными, глупыми и неграмотными решениями в разных ЯП. Делись своими впечатлениями, лоровец.

★★

Последнее исправление: CYB3R (всего исправлений: 1)

Ответ на: комментарий от k_andy

Я маны читать умею. На кой лад я буду использовать -print0, если \n всегда справлялся отлично со своими задачами.

bk_ ★★
() автор топика
Ответ на: комментарий от bk_

\n в качестве разделителя — такая же условность как и \0. Если строки содержат \n то сам \n как разделитель не получится использовать. Тут \0 и пригодится.

k_andy ★★★
()
Ответ на: комментарий от bk_

Есть очевиднейший формат строки, которому уже почти полвека. Приходят дяди с книжками пхп и js в руках и говорят, что

google://the+most+expensive+one-byte+mistake

x3al ★★★★★
()
Ответ на: комментарий от bk_

Ты читать умеешь? Тебе говорят про человекочитаемость, а ты всё про «ниасилили».

tiandrey ★★★★★
()
Ответ на: комментарий от bk_

* во-вторых, \0 должен останавливать парсер

Никому ничего не должен. Твое право - соблюдать стандарты, либо не соблюдать. Но ради тебя их никто переписывать не будет.

drull ★☆☆☆
()

Вообще интересно получается. Приходит $languagename-user и начинает возмущаться, что в неком стандарте забыли стандарты его любимого языка.

drull ★☆☆☆
()

тащемта в рфц 4627 четко прописаны все допустимые символы, и \0 среди них нет

специалист

redixin ★★★★
()
Ответ на: комментарий от bk_

написали кривой энкодер и чему-то удивляетесь?

Смешно.

грустно. боюсь даже представить чего там в том «энкодере»

redixin ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.