Envie “&” para o Drupal 6 usando o cURL?

2

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 & ?

    
por Najib-botak Chin 08.08.2011 / 12:37

2 respostas

2

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.

    
por 08.08.2011 / 12:48
1

& é 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

Na página de manual

--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.

    
por 08.08.2011 / 13:01

Tags