sourcecode

어떻게 하면 작은 따옴표만 피할 수 있을까요?

copyscript 2022. 9. 19. 23:30
반응형

어떻게 하면 작은 따옴표만 피할 수 있을까요?

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("'",  "&apos;", $x);
$x = str_ireplace("\\", "&bsol;", $x);
$x = str_ireplace('"',  "&quot;", $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 &amp; 'Tarzan'<br>
Jane &amp; &#039;Tarzan&#039;<br>
Jane &amp; '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

반응형