交換バックスラッシュとは別のシンボルはPHP
質問
てい換バックスラッシュに他のシンボルなどの'.-.' かを示すための位置のバックスラッシュとしていることが可能となり、文字列"などが、xampp\等を通じてurlを可変にしていかないといけないと思い私の最初のバックスラッシュはその文字列を別のシンボル、送信を通じurlを置き換えてバックスラッシュのPHPファイルが処理されます。でもそれはより良い方法を送りなどの文字列をurl?がんのスクリプトなど
$tmp_name = preg_replace("\", ".-.", $_FILES['uploadfile']['tmp_name']);
そのひとして提出してくださいphpのエラーとしてとしても使用されてい区切り文字..
が誰にも教えてくれるので助かります。
感謝。
ちなみ合うスタイルを送信できるインフォメーションの充実などを通じてのurl、この問題は解決されるものとは思わないので可能ですか?
解決
の正規表現の使用preg_replaceべきで囲まれた一対の区切り文字として使用 \\\
の代わりに \
:
$tmp_name = preg_replace("{\\\}", ".-.", $_FILES['uploadfile']['tmp_name']);
編集:
逆に置換できない:
$str = preg_replace('{\.-\.}',"\\",$str);
エスケープする必要があります .
マリテラルボディーです。
他のヒント
使用urlencode()
/ urldecode()
ます。
echo urlencode('C:\xampp\etc'); // C%3A%5Cxampp%5Cetc
ところで:巨大なセキュリティ上の欠陥のようなこの音は、(要求で絶対パスを送信)
<時間> PS:preg_replace()
は、正規表現のためです。 str_replace()
次回をお試しください。
私はURLから完全な配列を送信することができるだろう場合は、ところで、この全体の問題は解決されるだろうが、私はそれが可能だとは思わない?
簡単です。 PHPます:
$url = 'http://example.com/?array=' . urlencode(serialize($array)); // html
$array = unserialize($_GET['array']); // server side
やJavaScriptます:
url = "http://example.com/?array=" + encodeURIComponent(JSON.stringify(array)); // client
$array = json_decode($_GET['array']); // server
(JavascriptのためにあなたはencodeURIComponentでが正しいかどうかを調べる必要があるでしょう、そしてあなたにも公式のJSONライブラリを必要とする)
、あなたの代わりにstr_replace
を使用する必要があります:
$tmp_name = str_replace('\\', '.-.', $_FILES['...']);
あなたは別の\
(それ以外の場合は、以下の\
を脱出したい)と'
をエスケープする必要があることに注意してください。
のよう - 正規表現(/foo/
はデリミタである、/
パターンである)例えばfoo
ため、区切り文字で囲むことが必要です。しかし、再び、全く使用する必要性や正規表現についての心配はありません。