Para o primeiro ponto, se eu tentar fazer isso:
$str = "this / string";
var_dump(json_encode($str));
Eu recebo :
string '"this \/ string"' (length=16)
Com barras invertidas também.
Olhando para json.org , parece que o padrão JSON define que as barras, dentro das strings, devem ser escapadas.
Então,
json_encode()
parece estar fazendo a coisa certa. Se você não deseja que essas barras sejam escapadas, não deseja valid-JSON e não deve trabalhar com
json_encode
. Para o segundo ponto, agora, você não deve usar isso:
$posts[] = array(..., $posts2 );
Em vez disso, você deve usar:
$posts[] = array(..., 'attach' => $posts2 );
Desta forma, esse último elemento do array terá o nome 'attach'.