어떻게 하면 작은 따옴표만 피할 수 있을까요?
PHP로 렌더링된 문자열을 사용하는 JavaScript 코드를 작성하고 있습니다.내 PHP 문자열에서 작은 따옴표(단일 따옴표만)를 이스케이프하려면 어떻게 해야 합니까?
<script type="text/javascript">
$('#myElement').html('say hello to <?php echo $mystringWithSingleQuotes ?>');
</script>
간단히 말하면:echo str_replace('\'', '\\\'', $myString);
단, JSON을 사용하면 신뢰성이 높아지기 때문에 기능하는 것이 좋습니다(예를 들어 새로운 행을 인용합니다).
<?php $data = array('myString' => '...'); ?>
<script>
var phpData = <?php echo json_encode($data) ?>;
alert(phpData.myString);
</script>
다음 문자로 이스케이프하는 경우\
,당신은 가지고 있다addcslashes()
예를 들어, 질문과 같은 작은 따옴표만 이스케이프하려면 다음을 수행합니다.
echo addcslashes($value, "'");
탈출하고 싶다면'
,"
,\
,그리고.nul
(바이트 null), 를 사용할 수 있습니다.addslashes()
:
echo addslashes($value);
str_replace("'", "\'", $mystringWithSingleQuotes);
경우에 따라서는 엔티티로 변환하기도 합니다.
// i.e., $x= ABC\DEFGH'IJKL
$x = str_ireplace("'", "'", $x);
$x = str_ireplace("\\", "\", $x);
$x = str_ireplace('"', """, $x);
HTML 페이지에서 표시되는 출력은 동일합니다.
ABC\DEFGH'IJKL
다만, 소스는 소거되어 있습니다.
네이티브 기능 사용htmlspecialchars
그것은 모든 특수 캐릭터로부터 탈출할 것이다.특히 견적에서 벗어나고 싶다면ENT_COMPAT
또는ENT_QUOTES
다음은 예를 제시하겠습니다.
$str = "Jane & 'Tarzan'";
echo htmlspecialchars($str, ENT_COMPAT); // Will only convert double quotes
echo "<br>";
echo htmlspecialchars($str, ENT_QUOTES); // Converts double and single quotes
echo "<br>";
echo htmlspecialchars($str, ENT_NOQUOTES); // Does not convert any quotes
출력은 다음과 같습니다.
Jane & 'Tarzan'<br>
Jane & 'Tarzan'<br>
Jane & 'Tarzan'
PHP htmlspecialchars() 함수에 대한 자세한 내용 보기
작은 따옴표만 바꾸려면 다음 간단한 문을 사용합니다.
$string = str_replace("'", "\\'", $string);
다음과 같이 addcslashs 함수를 사용하여 이 작업을 수행할 수 있습니다.
echo addcslashes($text, "'\\");
오랫동안 이 문제와 싸워온 끝에 더 나은 해결책을 찾은 것 같아요.
두 함수의 조합으로 HTML로 사용할 문자열을 이스케이프할 수 있습니다.
첫 번째는 JavaScript 함수 호출 내에서 문자열을 사용할 경우 큰따옴표를 이스케이프하는 것입니다.두 번째는 인수를 우회하는 단순한 따옴표를 회피하는 것입니다.
솔루션:
mysql_real_escape_string(htmlspecialchars($string))
해결:
- 다음과 같은 자바스크립트 함수를 호출하기 위해 만들어진 PHP 행
echo 'onclick="subscript_function(\".mysql_real_subscript_string(htmlsspecialchars substring)'"
저는 다음과 같은 함수를 작성했습니다.다음 항목이 대체되었습니다.
작은따옴표 [']에 슬래시와 작은따옴표 [\']를 붙입니다.
백슬래시 [\]와 2개의 백슬래시 [\\]
function escapePhpString($target) {
$replacements = array(
"'" => '\\\'',
"\\" => '\\\\'
);
return strtr($target, $replacements);
}
$replacements 배열에 문자 치환을 추가하거나 삭제하도록 수정할 수 있습니다.예를 들어 \r\n을 치환하려면 "\r\n" => "\r\n" 및 "\n" => "\n"이 됩니다.
/**
* With new line replacements too
*/
function escapePhpString($target) {
$replacements = array(
"'" => '\\\'',
"\\" => '\\\\',
"\r\n" => "\\r\\n",
"\n" => "\\n"
);
return strtr($target, $replacements);
}
strr의 깔끔한 특징은 긴 교체를 선호한다는 것입니다.
예를 들어 "Cool\r\nFeature"는 \n을 이스케이프하지 않고 \r\n을 이스케이프합니다.
내가 한 방법은 이렇다.바보같지만, 간단해
$singlequote = "'";
$picturefile = getProductPicture($id);
echo showPicture('.$singlequote.$picturefile.$singlequote.');
사진을 보여주기 위해 자바스크립트 코드를 호출하는 HTML을 출력하는 작업을 하고 있었는데...
데이터로 정확히 무엇을 하고 있는지 모르겠지만 언제든지 시도해 볼 수 있습니다.
$string = str_replace("'", "%27", $string);
저장하기 위해 문자열이 데이터베이스로 전송될 때마다 사용합니다.
%27 '이(가) 경우 GET 요구가 하는 데 도움이 .'
문자는 서버로 전송되는 문자열에 포함되어 있습니다.만약 누군가가 당신의 PHP 함수에 데이터를 수동으로 보내려고 한다면 자바스크립트와 PHP 모두에서 %27로 대체하겠습니다.
에게 보다 의 모든 을 "Data"로 .'
.
해피주사 회피!
언급URL : https://stackoverflow.com/questions/6269188/how-do-i-escape-only-single-quotes
'sourcecode' 카테고리의 다른 글
HttpURL Connection HTTP 메서드: PATCH (0) | 2022.09.19 |
---|---|
와일드카드 호스트가 MariaDB(MySQL)에서 작동하지 않음 (0) | 2022.09.19 |
API 호출에서 Vuex 스토어의 일부 데이터를 설정하는 방법 (0) | 2022.09.19 |
MariaDB 10.3.9에서 PHP-7.1.20을 컴파일하는 동안 오류가 발생했습니다. (0) | 2022.09.19 |
PHP 파일 크기 MB/KB 변환 (0) | 2022.09.19 |