stripslashes

(PHP 4, PHP 5, PHP 7, PHP 8)

stripslashesクォートされた文字列のクォート部分を取り除く

説明

stripslashes(string $string): string

クォートされた文字列を元に戻します。

stripslashes() は、 (データベースのような)エスケープする必要がある 場所にデータをまだ挿入していない場合に使うことができます。 例えば、単純に HTML フォームからのデータを直接出力するような場合です。

パラメータ

string

入力文字列。

戻り値

バックスラッシュが取り除かれた文字列を返します(\' ' になるなど)。 2 つ並んだバックスラッシュ (\\) は 1 つのバックスラッシュ (\) になります。

例1 stripslashes() の例

<?php
$str
= "Is your name O\'reilly?";

// 出力: Is your name O'reilly?
echo stripslashes($str);
?>

注意:

stripslashes() は再帰的な処理を行いません。 この関数を多次元配列に適用する場合は、 再帰的な関数を使用する必要があります。

例2 配列に対する stripslashes() の使用

<?php
function stripslashes_deep($value)
{
$value = is_array($value) ?
array_map('stripslashes_deep', $value) :
stripslashes($value);

return
$value;
}

// 例
$array = array("f\\'oo", "b\\'ar", array("fo\\'o", "b\\'ar"));
$array = stripslashes_deep($array);

// 出力
print_r($array);
?>

上の例の出力は以下となります。

Array
(
    [0] => f'oo
    [1] => b'ar
    [2] => Array
        (
            [0] => fo'o
            [1] => b'ar
        )

)

参考

add a note

User Contributed Notes 6 notes

up
71
ivijan dot stefan at gmail dot com
11 years ago
Sometimes for some reason is happens that PHP or Javascript or some naughty insert a lot of  backslash. Ordinary function does not notice that. Therefore, it is necessary that the bit "inflate":<?phpfunction removeslashes($string){    $string=implode("",explode("\\",$string));    return stripslashes(trim($string));}/* Example */$text="My dog don\\\\\\\\\\\\\\\\'t like the postman!";echo removeslashes($text);?>RESULT: My dog don't like the postman!This flick has served me wery well, because I had this problem before.
up
6
shredder at technodrome dot com
16 years ago
Hi, Here are recursive addslashes / stripslashes functions.given a string - it will simply add / strip slashesgiven an array - it will recursively add / strip slashes from the array and all of it subarrays. if the value is not a string or array - it will remain unmodified!<?phpfunction add_slashes_recursive( $variable ){    if ( is_string( $variable ) )        return addslashes( $variable ) ;    elseif ( is_array( $variable ) )        foreach( $variable as $i => $value )            $variable[ $i ] = add_slashes_recursive( $value ) ;    return $variable ;}function strip_slashes_recursive( $variable ){    if ( is_string( $variable ) )        return stripslashes( $variable ) ;    if ( is_array( $variable ) )        foreach( $variable as $i => $value )            $variable[ $i ] = strip_slashes_recursive( $value ) ;        return $variable ; }?>
up
1
Tom Worster
16 years ago
A replacement that should be safe on utf-8 strings.<?php  preg_replace(array('/\x5C(?!\x5C)/u', '/\x5C\x5C/u'), array('','\\'), $s);?>
up
2
o-zone at zerozone dot it
16 years ago
If you need to remove all slashes from a string, here's a quick hack:

<?php
function stripallslashes($string) {
    while(strchr($string,'\\')) {
        $string = stripslashes($string);
    }
}
?>

Hope it's usefull , O-Zone
up
1
stoic
18 years ago
in response to crab dot crab at gmail dot com:$value need not be passed by reference. The 'stripped' value is returned. The passed value is not altered.
up
1
hash at samurai dot fm
21 years ago
Might I warn readers that they should be vary careful with the use of stripslashes on Japanese text. The shift_jis character set includes a number of two-byte code charcters that contain the hex-value 0x5c (backslash) which will get stripped by this function thus garbling those characters.What a nightmare!
To Top