문제

PHP 코드에서 일부 JavaScript를 생성하고 있으며 PHP 변수를 JavaScript 변수에 할당해야합니다. 불행히도 때로는 내 PHP 변수에 인용 표시가 포함되어 있습니다. 예를 들어:

$foo = "'Dis here be a \"string\"";
print "<script type='text/javascript'>var foo = '{$foo}';</script>";

결과 JavaScript가 다음과 같기 때문에 JavaScript 오류가 발생합니다.

<script type='text/javascript'>var foo = '"'Dis here be a \"string\"';

나는 $ foo에서 regexp를 사용할 수 있다는 것을 알고 있습니다. ' 마크 \' 그러나 이것은 여러 가지 이유로 어렵습니다. 내가 할 수있는 일이 있습니까? Perl과 비슷한 것 q() 기능...

도움이 되었습니까?

해결책

이 작업을 시도 했습니까?

$foo = "'Dis here be a \"string\"";
echo '<script type="text/javascript">var foo = "'.addslashes($foo).'";</script>';

보다: http://php.net/manual/en/function.addslashes.php

다른 팁

json_encode ()를 사용합니다.

http://ie2.php.net/manual/en/function.json-encode.php

이것은 올바른 방향으로 나아가 야합니다.

addcslashes($str, "\"\r\n\\\t/\0..\37");

확실합니까? 그렇지 않습니까 :

var foo = ''Dis here be a "string"'

이중 '시도를 방지하기 위해 :

$foo = "\'Dis here be a \"string\"";

또는

$foo = '\\\'Dis here be a "string"';

PHP 파일을 JavaScript 파일로 사용할 수 있다는 점도 주목할 가치가 있습니다.

<script type="text/javascript" src="js/main.php"></script>

또한 해당 파일에서 PHP 코드를 실행할 수 있으며 PHP에서 Echoing을 통해 JavaScript 코드를 출력 할 수 있습니다.

JavaScript의 최종 값을 사용하고 있으므로 사용하겠습니다. json_encode:

$foo = "'Dis here be a \"string\"";
print "<script type='text/javascript'>var foo = " . json_encode($foo) . ";</script>";

그리고 그것은 올바르게 출력 할 것입니다.

<script type='text/javascript'>var foo = "'Dis here be a \"string\"";</script>

주위에 여분의 인용구를 넣지 않았습니다. json_encode 기능. 유효한 JavaScript 문자열을 자동으로 만들기 위해 필요한 따옴표를 추가합니다.

프랭크 파머의 대답은 흥미롭지 만 탭처럼 탈출 할 필요가없는 것들을 피하고 있습니다.

이 스 니펫을 사용해보십시오. 잘 작동합니다.

<script type="text/javascript">
    alert("Hi!\n\tHi!\n<?php echo '\tHI!',"\\n\tHI!";?>");
</script>

텍스트를 JavaScript 문자열로 직접 전달하는 PHP 스크립트의 데이터베이스에 항상 연결되어 있으므로 Dirty 작업을 수행하기 위해 Real_escape_string에 의지합니다. AddSlashes ()는 최신 라인을 처리하지 않으며 때로는 JavaScript로 전달하는 문자열에 몰래 들어갑니다.

간단한 $sql->real_escape_string($string) 데이터베이스가 자바 스크립트 친화적 인 형태로 빠져 나가는 모든 것을 더 나은 것은 더 좋게 만듭니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top