2013-02-12 2 views
0

간단한 따옴표를 탈출 문자열 형식. json_encode에 의해 생성 된 JSON 객체를 반복 할 때 (PDO와 연관 배열로 데이터를 가져 와서 인코딩 한 다음) 루프의 모든 문자열에 addslashes을 사용하면 간단한 따옴표 만 이스케이프 처리됩니다.Addslashes은 다음과 같이 내 PHP 코드에서 몇 가지 문자열 변수가

(I가 잘 형성되지 알고 있지만, 이것이 내가 데이터베이스에서 그것을 얻을 방법입니다 ...)

모두의 이상한 점은 문서에, 내가 본 것입니다 그 따옴표 수 이 기능을 이스케이프, 그래서 이스케이프 될 수 있을지 확인하기 위해 문자열의 첫 번째 위치에 다른 하나를 넣어 시도 :

$mystring = '"' . $mystring;

그것은 이스케이프, 나는 왜 다른 사람을 알고하지 않는 나중에 문자열에 와서하지 않습니다. 누구든지이 문제를 해결하는 방법에 대한 단서가있는 경우

$dbh = new PDO("mysql:host=" . HOST . ";dbname=" . DATABASE, DB_USER, DB_PASSWORD); 

$data = $dbh -> query("MY SELECT REQUEST"); 
$result = $data -> fetchAll(PDO::FETCH_ASSOC); 

$result_inter; 

foreach ($result as $key => $entry) { 
    foreach ($entry as $key2 => $entry_inter) { 
     $new_value = $entry_inter; 
     $new_value = strip_tags($new_value); 
     $new_value = addslashes($new_value); 
     $new_key[$key2] = $new_value; 
    } 
    $result_inter[$key] = $new_key; 
} 

$result = json_encode($result_inter); 
echo($result); 

, 나는 감사하게 될 거라고 :

여기에 (큰 따옴표를 이스케이프되지 않음) 내 현재의 조각입니다.

+0

배열을 채우는 코드를 게시 할 수 있습니까? – hek2mgl

+0

필자는 데이터베이스에서 PDO와 함께'fetchAll (PDO :: FETCH_ASSOC);'를 사용하여 배열을 채 웁니다. –

+0

전체 루프가 필요함 (단순화 될 수 있음) 질문에 추가 할 수 있습니다. 나는 틀린 것을 알고 있지만 코드가 필요하다고 생각합니다. – hek2mgl

답변

2

JSON에 넣으려면 addslashes 인 요술 대신 json_encode을 사용하십시오.

+0

이미 json_encode를 사용하고 있습니다 ... 결과 JSON은 나머지 큰 따옴표로 인해 제대로 구성되지 않았습니다. –

+0

@Selphira :'json_encode'의 출력이 올바른 형식이 아닌 것은 불가능합니다. 당신은 그걸 가지고 뭔가 다른 것을하고 있으며 분명히 뭔가 잘못되었다고 생각합니다. 이게 뭐야? – Jon

+0

일부 속성에서 html 태그를 제거하기 위해'strip_tags' 호출과 함께 간단한 루프를 수행하고 있습니다. HTML 태그가 HTML 컨텐츠를 포함하고 있기 때문에 HTML 태그가 충돌 할 수 있다고 생각하여 태그가없는 문자열에서 큰 따옴표를 제거합니다. 실제 원인이라고 생각하십니까? (나는'echo'에서 html이 포맷되고 디버깅하는 것이 짜증 스럽기 때문에 그것도 제거했다.) –

0

strip_tags, addslashes 또는 다른 기능을 사용하지 않아도됩니다. 배열을 JSON으로 인코딩하려면 json_encode을 사용하면됩니다.

따옴표에서 벗어나려면 JSON_HEX_APOS 또는 JSON_HEX_QUOT과 같은 사용 가능한 옵션이 많지 않을 수도 있습니다.

예 :

$string = "'apo'"; 
echo json_encode($string , JSON_HEX_APOS); 

출력됩니다 "\u0027apo\u0027".

나는 그것이 당신이 찾고있는 것이라고 생각합니다.