欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

php 不轉譯

劉艷霞1年前7瀏覽0評論

對于使用PHP的人來說,我們都知道PHP在處理字符串時會應用一些內部函數對字符串進行轉義,將特定字符替換成對應的實體,以便在html等上下文中呈現。這些內部函數包括htmlentities、htmlspecialchars、addslashes等。

不過有時候,我們在某些情況下需要原樣輸出字符串,而不需要經過這些函數的處理,這可能包括在一些API接口中返回純文本結果或是一些特定格式的數據等場景。那么,在PHP中我們該如何實現不轉譯字符串的輸出呢?

首先,我們看一下使用內部函數進行轉義時的情況:

<?php
$str = "<script>alert('hello world')</script>";
echo htmlentities($str);
?>

上面的代碼會將字符串中的尖括號、雙引號等字符替換成對應的實體,輸出結果如下:

<script>alert('hello world')</script>

而如果我們不想要字符串被轉義,可以使用PHP的“heredoc”語法,將字符串包含在兩個“<<<”之間:

<?php
$str = "<<<EOD
<script>alert('hello world')</script>
EOD;
echo $str;
?>

上面的代碼不會對字符串進行任何轉義,輸出結果如下:

<script>alert('hello world')</script>

除了“heredoc”語法之外,我們還可以使用另一種語法——“nowdoc”語法。它的用法和“heredoc”語法類似,只是在外層使用單引號進行包裹:

<?php
$str = <<<'EOD'
<script>alert('hello world')</script>
EOD;
echo $str;
?>

上面的代碼同樣會原樣輸出字符串,不會進行任何轉義,輸出結果和前面的代碼一樣。

不過需要注意的是,使用“heredoc”或“nowdoc”語法時,結束符(在上面代碼中的“EOD”)不能和代碼中已有的字符串內容重復。否則會導致語法錯誤。

此外,在一些情況下,我們也可以簡單地使用PHP的原始輸出函數“echo”:

<?php
$str = "<script>alert('hello world')</script>";
echo $str;
?>

雖然前面我們提到了使用echo輸出會自動轉義字符串,但其實在某些情況下,echo輸出的字符串并不會被轉義,比如在如下情景:

<?php
$str = "alert('hello world')";
?>
<script><?php echo $str; ?></script>

上面的代碼中,$str變量中的字符串會原樣輸出到<script>標簽內,不會被轉義。

總之,對于不想讓PHP內部函數處理字符串的情況,我們可以使用“heredoc”或“nowdoc”語法包裹字符串,也可以使用PHP的原始輸出函數“echo”,或是在特定情況下使用echo輸出字符串,從而實現不轉義字符串的輸出。