これは夢中になっていますが、答えが見つからないようです。ネットワーク ドライブにマッピングするための Windows samba パスが含まれる場合があるテクニカル ナレッジ ベースを実行します。
例えば:\\servername\sharename
バックスラッシュが 2 つ続くパスを含めると、「addslashes」の実行時に適切にエスケープされません。期待される結果は " " です\\\\servername\\sharename
が、" " が返されます\\servername\\sharename
。後で 'stripslashes' を実行すると、二重のバックスラッシュ プレフィックスは 1 つのスラッシュにすぎません。また、 a を使用してみましたが、予想されるときにstr_replace("\\", "\", $variable);
返されます。"\servername\sharename"
"\\servername\sharename"
したがって、addslashes を使用すると、最初の 2 つのバックスラッシュのセットが無視され、str_replace を使用すると、2 つのバックスラッシュが 1 つのエンコードされたバックスラッシュに変更されます。
データベースを挿入するには、addslashes と stripslashes を実行する必要があります。pg_escape_string を使用しても、この特定のケースでは機能しません。
これは、Apache 上の PHP 5.3.1 で実行されています。
編集: コード例
$variable = 'In the box labeled Folder type: \\servername\sharename';
echo addslashes($variable);
これは次を返します:In the box labeled Folder type: \\servername\\sharename
編集: コード例 #2
$variable = 'In the box labeled Folder type: \\servername\sharename';
echo str_replace('\\', '\', $variable);
これは次を返します:In the box labeled Folder type: \servername\sharename
また、一重引用符または二重引用符を使用しても、(ご想像のとおり) 異なる結果が得られないことを述べたいと思います。どちらかまたは両方を使用しても、まったく同じ結果が得られます。
私ができることについて何か提案はありますか?