0

私のフラッシュプロジェクトには、XMLファイルを動的に(PHPで)作成するスクリプトがあるとしましょう。XML ファイル名は特定の変数に基づいておりescape(variable)、その変数にサポートされていないファイル名の文字が含まれている可能性がある (そしてほとんど含まれている) 場合に備えて、使用してエスケープされます...

.xml ファイルの正確な名前を後でフラッシュ プロジェクトで知る必要がありますunescape(XMLfile) == variable。変数がたくさんあるので、String.replace()関数を使用してサポートされていないファイル名の文字を一掃することはできません...

私が使用しているPHPファイルの一部があります:

$XMLDom = new DomDocument('1.0', 'UTF-8');
$xmlId = trim($_POST['xmlId']);
if(file_exists($xmlId)){
    $XMLDom ->load($xmlId);
}else{
    $newXMLHandler = fopen($xmlId, 'w') or die("can't open file");
    fclose($newXMLHandler);

    $XMLDom ->load($xmlId);

    .... rest of the code ....

    $XMLDom ->save($xmlId);
}

上記のコードの結果は、ディレクトリに 2 つの新しく作成された XML ファイルがあることです

fopen($xmlId, 'w')fi%20le%2C%2E%40.xml 」という名前の XML 空の 1 つと、新しい XML データがすべて保存されている「 file ,.@.xml 」という名前の 2 つ目のXML が作成されました...

エスケープされた名前付き XML ファイルを PHP でロードする方法はありますか?

前もって感謝します。

アーサー。

4

1 に答える 1

1

私はあなたの問題を理解しているとは確信していませんが、あなたの質問がPHPでescape()するアナログ関数を見つけることであった場合、それurlencode()は最良の一致のように見えますが、エスケープされているものを正確に調査する必要があります. たとえば、文字列、特にマルチバイト文字列をパーセント エンコードする方法はいくつかあることに注意してください。Flash は、異なる文字サブセットのエンコードescapeMultibyte()を使用する場合もあれば、両方を使用する場合もあります。encodeURIComponent()

ファイル名に関しては、HTTP サーバーが Unix システムで実行されている場合、"file,.@.xml" は有効なファイル名であり、心配する必要はありません。不便な場合もありますが、正当な名前です。

touch 'fi le,.@.xml'

ファイルを作成しますが、問題はありません。基本的に、制限される文字はスラッシュとヌル文字 ("\x00") ですが、シェル コマンドとして解釈される可能性のある文字も制限するのが一般的です。これは実際にはあなた次第です。

于 2012-06-01T19:48:03.400 に答える