Я использую следующую функцию:PHP сокет - неправильная длина результата - дополнительные символы
function createSocket($host, $script, $request, $method="POST", $port="8080") {
$request_length = strlen($request);
$output="";
$script .= "?$request";
//echo "host=".Middle_Tier;
$header = "$method $script HTTP/1.1\r\n";
$header .= "Host: $host\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: $request_length\r\n";
$header .= "Connection: close\r\n\r\n";
$header .= "$request\r\n";
$socket = fsockopen($host, $port, $errno, $errstr);
if ($socket) //if its open, then...
{
fputs($socket, $header); // send the details over
while(!feof($socket)) {
$output[] = fgets($socket); //get the results
}
return $output;
fclose($socket);
}
else {
return false;
}
}
$host = 'my host';
$script = 'path/to/my/function';
$request = "phone=$phone&city_id=$city_id";
$arr = createSocket($host, $script, $request, $method="POST", $port="8080");
Я получаю этот результат моего назначения:
$arr[9] = unavailable
и при печати:
strlen($arr[9]);
выход (т. Е. 3 дополнительных символа)
Просьба показать результат print_r ($ arr) – abresas
использовать 'var_dump', чтобы увидеть фактическое содержимое переменной. 'var_dump' также выводит длину. не используйте print_r, никогда. например 'var_dump (" unavailable ")' prints out 'string' unavailable '(length = 13) '. 'print_r (" unavailable ");' просто выводит строку и два пробела без дополнительной информации. – Basti
С помощью var_dump я получаю: [9] => строка (5) "недоступен" почему, когда я печатаю $ обр [9] из положить только: недоступен ???? – Mahmoudco