1

特定のパラメーターを持つ CodeIgniter の URL を置き換えようとしています。CI の最良の部分が機能しているため、現時点ではその CI は重要ではありません。

私のURLは次のとおりです。

?device=field1-field2_field3+field4

$devicelink2 をエコーアウトすると、次のように表示されます。

field1 field2.field3*field4

現在、+ を置き換える以外はすべて動作します。何らかの理由で + をスペースに置き換えます。

ただし、以下のコードを使用してそれを機能させることはできません。何か案は?

    $device = $this->input->get('device');
    $devicelink = str_replace("-"," ",$device);
    $devicelink1 = str_replace("_",".",$devicelink);
    $devicelink2 = str_replace("+","*",$devicelink1);
4

3 に答える 3

6

+クエリ文字列の は実際にはスペース文字を表すため、この (非常に奇妙な) クエリ文字列では:

?device=field1-field2_field3+field4

$this->input->get('device')に等しいfield1-field2_field3 field4

この正確なクエリ文字列で目的の出力を取得する方法の文字通りの質問に答えるには:

$device = $this->input->get('device');
$devicelink = str_replace(" ", "*", $device);
$devicelink1 = str_replace("_", ".", $devicelink);
$devicelink2 = str_replace("-", " ", $devicelink1);

または:

$devicelink2 = str_replace(array(' ', '_', '-'), array('*', '.', ' '), $device);

これらの文字を元のクエリ文字列に入れるだけで問題が発生する場合は、適切にエンコードしてください。

?device=field1+field2.field3%2Afield4

これについては、 PHP のネイティブurlencode関数を参照してください: http://php.net/manual/en/function.urlencode.php

于 2012-10-07T22:42:12.290 に答える
0

str_replace は配列を適切に受け入れます。str_replace(array('she', 'loves', 'me'), array('he' , 'hates', 'you'), 'she love me not you');

str_replace は、「彼はあなたではなくあなたを嫌っています」を返します。(恐ろしい例ですね)。

検索する配列と置換文字列を入力すると、すべての配列値が干し草スタックから指定された文字列に置き換えられます。

または、同じ数の要素を含む 2 つの配列を入力すると、「検索」配列の要素がそれぞれの置換値に置き換えられます。

$devicelink = str_replace(array('-', '_', '+'), array(' ', '.', '*'), $device);

于 2012-10-07T22:46:50.530 に答える
0

これを試して:

$search  = array('-', '_', '+');
$replace = array(' ', '.', '*');
$subject = $this->input->get('device');

$deviceLink = str_replace($search, $replace, $subject);
于 2012-10-07T22:41:50.873 に答える