これは夢中になっていますが、私は答えが見つからないようです。私たちは、時にはネットワークドライブへのマッピング用のWindows sambaパスを含む技術的な知識ベースを実行します。PHP 'addslashes'が期待通りに動作しない
たとえば「にaddslashes」を実行しているとき
私たちはお互いに続いて2つのバックスラッシュを持ってパスを含める\\servername\sharename
は、彼らが適切にエスケープされません。私の予想される結果は "\\\\servername\\sharename
"ですが、 "\\servername\\sharename
"を返します。明らかに、後で 'stripslashes'を実行すると、二重バックスラッシュプレフィックスはスラッシュだけです。私もstr_replace("\\", "\", $variable);
を使ってみましたが、"\\servername\sharename"
と期待したら"\servername\sharename"
を返します。
addslashesでは、最初の二重バックスラッシュのセットを無視し、str_replaceでは二重バックスラッシュを単一のエンコードされたバックスラッシュに変更します。
データベースの挿入にaddslashesとstripslashesを実行する必要があります。特定のケースではpg_escape_stringを使用しても機能しません。
これはApache上でPHP 5.3.1で動作します。
EDIT:サンプル・コードは、
$variable = 'In the box labeled Folder type: \\servername\sharename';
echo addslashes($variable);
これが返されます:In the box labeled Folder type: \\servername\\sharename
は
EDIT:サンプルコード#は2
$variable = 'In the box labeled Folder type: \\servername\sharename';
echo str_replace('\\', '\', $variable);
これが返されます:In the box labeled Folder type: \servername\sharename
私も思いますのが好き一重引用符や二重引用符を使用しても、私には異なる結果が得られるとは言えません。いずれかまたは両方を使用すると、私には同じ正確な結果が得られます。
誰かが私ができることについて何か提案がありますか?
私はちょうど2つのバックスラッシュを含む文字列にaddslashesを実行し、4つのバックスラッシュを返します。私は、いくつかのコード例が必要だと思います。 – StasM
あなたのケースでpg_escape_stringはなぜ機能しませんか? – babonk
コードサンプルをセコンディングする。私はこれが "'(エスケープしない)と" "(エスケープする)という文字列への扱いの違いになると思います。 – lotsoffreetime