-4

私はこのような配列を持っています:

array(46) 
{ 
[0]=> array(4) { ["category"]=> string(21) "Media/news/publishing" ["name"]=> string(20) "Cosmopolitan Armenia" ["id"]=> string(15) "146307748762264" ["created_time"]=> string(24) "2013-03-20T14:40:43+0000" } 
[1]=> array(4) { ["category"]=> string(17) "Telecommunication" ["name"]=> string(5) "Zangi" ["id"]=> string(15) "386291674718829" ["created_time"]=> string(24) "2013-03-20T11:07:46+0000" } 
[2]=> array(4) { ["category"]=> string(13) "Musician/band" ["name"]=> string(11) "Ray Charles" ["id"]=> string(12) "430894850091" ["created_time"]=> string(24) "2013-03-16T22:03:46+0000" } [3]=> array(4) { ["category"]=> string(4) "Cars" ["name"]=> string(13) "I'm In Like With You" ["id"]=> string(15) "447042531989769" ["created_time"]=> string(24) "2013-03-16T22:01:46+0000" } .......
}

このコードの理由を知っている人はいますか:

str_replace("'","\'",MY_ARRAY);

'... in を 置き換えません"I'm In Like With You"か?

4

5 に答える 5

0

この単純な再帰関数を試すことができます

$object = new stdClass();
$object->game = "GOW'4";
$object->whoami = "Peehaa'";

$array = array(
        "nice'kkk",
        "Fish" => array(
                "X" => "one'one",
                "obj" => $object
        )
);

print_r(str_replace_recursive("'", "*", $array));

出力

Array
(
    [0] => nice*kkk
    [Fish] => Array
        (
            [X] => one*one
            [obj] => stdClass Object
                (
                    [game] => GOW*4
                    [whoami] => Peehaa*
                )

        )

)

使用する機能

function str_replace_recursive($search, $replace, $subject) {
    $result = null;
    if (is_array($subject)) {
        $result = array();
        foreach ( $subject as $k => $var ) {
            $result[$k] = str_replace_recursive($search, $replace, $var);
        }
    } elseif (is_object($subject)) {
        $result = clone $subject;
        foreach ( $subject as $k => $var ) {
            $result->{$k} = str_replace_recursive($search, $replace, $var);
        }
    } else {
        $result = str_replace($search, $replace, $subject);
    }

    return $result;
}
于 2013-04-15T17:25:54.790 に答える
0

配列内で直接置換することはできません。「これを見つける」および「置換する」テキストとして配列を使用できますが、操作しているのはプレーンな文字列である必要があります。

配列をループしてから、各文字列で置換操作を行う必要があります。

foreach($array as $key => $element) {
    $array[$key] = str_replace(..., ..., $element);
}

配列に複数の個別の文字列がある場合、それぞれを処理する必要があります。

  $array[$key]['name'] = str_replace(....,...., $element);
于 2013-04-15T17:21:58.117 に答える