cURL을 사용하여 Drupal 6 양식에 "&"를 제출하시겠습니까?

cURL을 사용하여 Drupal 6 양식에 "&"를 제출하시겠습니까?

이 코드를 사용하여 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로 인코딩되어야 합니다.

관련 정보