PHP создать строку C - PullRequest
       26

PHP создать строку C

1 голос
/ 09 сентября 2011

Мне нужно передать сообщения моей программе на C из PHP, и я делаю это через очереди сообщений.

У меня работают очереди сообщений, и обе стороны могут получать сообщения.

Проблема заключается в форматировании данных на стороне php. Я пытаюсь отправить строку в стиле C, но php обрабатывает строки по-разному. Как бы я преобразовал строку php в пустую строку C?

В основном мне нужно, чтобы 'config1' была строкой с нулевым символом в конце.

msg_send($mq_id, $MSG_CHANGECONFIG, 'config1', true, false, $error);

Похоже, php хранит строки примерно так: \ "s: 8: \\" config1 \ 000 \\ "; где \ просто экранирует.

Есть ли способ сделать это или другой способ проанализировать это со стороны C, чтобы преобразовать это в строку C?

Ответы [ 2 ]

2 голосов
/ 09 сентября 2011

Вы можете попробовать с

$nullTerminatedString = sprintf("config1%c", 0);
// or directly using escape sequence
$nullTerminatedString = "config\0";
echo strlen(sprintf("config1%c", 0)); # returns 8, so it should work

Взято с здесь

сериализации Необязательный serialize определяет способ отправки сообщения. по умолчанию значение serialize равно TRUE, что означает, что сообщение сериализовано. используя тот же механизм, что и модуль сеанса, перед отправкой очередь. Это позволяет отправлять сложные массивы и объекты другим PHP-скрипты или, если вы используете сериализатор WDDX, к любому WDDX совместимый клиент.

Итак, ваш звонок должен быть:

msg_send($mq_id, $MSG_CHANGECONFIG, 'config1', **false**, false, $error);
0 голосов
/ 09 сентября 2011

Если вы хотите добавить к нему только нулевой байт, используйте восьмеричную escape-последовательность (для этого нужно использовать двойные кавычки):

"config1\0"
...