このコードを使用して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
これには以下がfile.html
含まれます。
spasi
sblmtitle
Some title here & there
slpstitle
Drupalはタイトル付きのノードを作成しますSome title here
。 Drupalはこの文字を拒否します&
。
Drupal 6がこれを受け入れるようにするにはどうすればよいですか&
?
答え1
&はURLに特別な意味を持ちます。 URLに実際の&記号を渡すには、エンコードする必要があります%26
。追加のsed式に変更したり、ファイルから変更したりできます。
答え2
&
フォームフィールドを区切るには、正しく--data-urlencode
エンコードされたオプションを使用してください&
。
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) これは、他の --data オプションと同様にデータを公開しますが、URL エンコードを実行します。 (7.18.0で追加)name=content
これにより、カールはコンテンツ部分をURLエンコードして渡します。名前部分はURLでエンコードする必要があります。