O Ampersand tem um significado especial em URLs. Para transmitir um e comercial real em um URL, você deve codificá-lo como %26
. Você pode fazer essa alteração com uma expressão extra sed ou apenas alterá-la no arquivo.
Estou usando este código para criar um nó no Drupal 6:
curl -b cookies.txt -d \
title="$(sed '1,/sblmtitle/d;/slpstitle/,$d' file.html)" \
-d form_build_id=form-5312da71abefb3bf1f63f1f2b7cf9105 \
-d form_token=f65aaefcf6f4b20c9a3d34f5af13ccaf \
-d form_id=post_node_form -d op=Save http://www.site.com/node/add/post
O file.html
contém:
spasi
sblmtitle
Some title here & there
slpstitle
O Drupal cria um nó com o título Some title here
. O Drupal rejeita o caractere &
;
O que posso fazer para que o Drupal 6 aceite &
?
&
é usado para separar campos de formulário, use a opção --data-urlencode
para codificar &
corretamente:
curl -b cookies.txt --data-urlencode \
title="$(sed '1,/sblmtitle/d;/slpstitle/,$d' file.html)" \
-d form_build_id=form-5312da71abefb3bf1f63f1f2b7cf9105 \
-d form_token=f65aaefcf6f4b20c9a3d34f5af13ccaf \
-d form_id=post_node_form -d op=Save http://www.site.com/node/add/post
--data-urlencode
(HTTP) This posts data, similar to the other --data options with the exception that this performs URL-encoding. (Added in 7.18.0)name=content
This will make curl URL-encode the content part and pass that on. Note that the name part is expected to be URL-encoded already.
Tags curl