Когда я пытаюсь создать папку, имя которой разделено пробелами, оно берет только первое слово и игнорирует второе. Как мне это решить? Я пишу с помощью php для сервера dovecot. Разделитель пространства, заданный LIST, является "/".
Код:
private const NEWLINE = "\r\n";
private socket = fsockopen("ssl://testmail.com", 465, $errno, $errstr,
20);
$foldername = "Hello World"
function createFolder($socket, $foldername) {
fputs($socket, "A3 Create " . $foldername . self::NEWLINE)
return read($socket);}
function read($socket)
{
stream_set_timeout($socket, 30);
$lines = [];
while(\FALSE !== ($line = fgets($socket))) {
$lines[] = $line;
if (\FALSE !== strpos($line, 'BAD')) {
break;
}
if (\FALSE !== strpos($line, 'NO')) {
break;
}
if (\FALSE !== strpos($line, 'OK')) {
break;
}
if (\FALSE === strpos($line, 'OK')) {
continue;
}
}
return $lines;}
Я пытался экранировать строки и писать по-другому, но, похоже, ничего не работает. Он создает папку, но, как упоминалось выше, только с первым словом.
Ответ сервера:
array(1) {[0]=>string(25) "A3 OK Create completed."}
edit: Вот некоторые из вещей, которые я опробовал, один раз изменив fputs, а затем поиграв со строкой:
fputs($socket, "A3 Create " . \$foldername . self::NEWLINE) Result: HTTP ERROR 500
fputs($socket, "A3 Create " . '$foldername' . self::NEWLINE) Result: $foldername
fputs($socket, "A3 Create " . "$foldername" . self::NEWLINE) Result: Hello
fputs($socket, "A3 Create " . '\$foldername . self::NEWLINE) Result: \$foldername
fputs($socket, "A3 Create " . 'Hello' . 'World' . self::NEWLINE) Result: HelloWorld
fputs($socket, "A3 Create " . 'Hello ' . 'World' . self::NEWLINE) Result: Hello
fputs($socket, "A3 Create " . "Hello " . "World" . self::NEWLINE) Result: Hello
$foldername = "'Hello World'"; Result: 'Hello
$foldername = '"Hello World"'; Result: Hello
$foldername = 'Hello World'; Result: Hello
$foldername = "'Hello \ World'"; Result: 'Hello
$foldername = "<<<EOD Hello World EOD"; Result: <<<EOD
$foldername = '<<<EOD Hello World EOD'; Result: <<<EOD
$foldername = <<<EOD Hello World EOD; Result: Hello
$foldername = "%Hello World%"; Result: %Hello
$foldername = '%Hello World%'; Result: %Hello
$foldername = '\Hello World'; Result: \Hello
$foldername = "\Hello World"; Result: \Hello