2010-05-26 3 views
1

PHP 웹 개발에 익숙해졌습니다. 사용자가 일련의 동적 생성 체크 박스를 확인하고 POST를 통해 제출하는 HTML 양식이 있습니다. PHP 측면에서 어떤 체크 박스가 클릭되었는지 확인하고 싶습니다.문자열을 POST 배열로 인코딩하는 정확한 규칙/PHP 함수는 무엇입니까?

가 나는 배열 $ full_list을 가지고 있고, POST 배열에이 "라는 이름 때문에, 목록 항목의 이름은 때 예"땅콩 버터 "에 대한 문제로 실행

$selected_checkboxes = array_filter($full_list, function($item) { 
    array_key_exists($item, $_POST); 
    } 

같은 일을하고 있어요 땅콩 버터".

array_key_exists를 확인하기 전에 확실히 "_"로 str_replace를 사용할 수 있지만, 여기에는 근본적인 인코딩 문제가 있다고 상상해보십시오. 구체적으로, HTML 폼 (value = "Peanut Butter")의 일반 문자열을 "Peanut_Butter"로 변환하는 레이어를 정확히 모르겠습니다.

그래서 :

  • 어떤 층이 변환에 대한 책임? 브라우저입니까?
  • 정확한 변환 규칙은 무엇이며, 정확한 변환을 복제 할 수있는 PHP 함수가 있습니까?

답변

-1

PHP는이 작업을 수행하지 않습니다. 공백을 밑줄로 변환하는 클라이언트쪽에 뭔가가 있습니다.

브라우저는 urlencode()에 해당하는 값을 사용하여 각 변수를 인코딩해야합니다. PHP는 이러한 문자열을 자동으로 디코드하므로 프로그래머에게 투명합니다.

편집 해당 자바 스크립트는 escape()입니다. 그러나 공간을 밑줄로 수동 변환하는 js 코드가있을 가능성이 매우 높습니다.

+0

감사합니다. urlencode는 클라이언트 코드에서 일어나는 일을 복제하기에 충분합니까? – AlexeyMK

+0

방화범이나 피들러를 사용할 수 있습니다.

을 만든 다음 텍스트를 입력하십시오. 브라우저가 전송하는 것을보기 위해 네트워크 패널에서 방화 녀 (firebug)를보십시오. 당신이 파이어 폭스를 사용하지 않는 경우, 피 들러를 움켜 잡고 똑같은 일을하십시오. 그래도 약속 하겠어. 자네 문자열을 재 작성하는 자바 스크립트가있다. –

+0

나는 그것을 할 것이라고 확신한다. PHP 서버 측의 어떤 기능이 어떤 브라우저를 사용 하던지간에 어떤 기능을 복제했는지는 더 흥미 롭습니다. 또한이 문제를 잘못된 방법으로 접근하고 있습니까? 일련의 서식 체크 박스 중 어떤 것이 클릭되었는지 먼저 확인해야 할 필요는 없습니다. – AlexeyMK

3

Byron Whitlock의 답변이 잘못되었습니다. PHP가 실제로 여기에 있습니다. PHP manual :

변수 이름의 점과 공백은 밑줄로 변환됩니다. 의 경우 예 : <input name="a.b" />$_REQUEST["a_b"]이됩니다.

또한 this similar question의 응답을 참조하십시오.

관련 문제