0

htmlspecialchars()2回エンコードされたように見えるXMLファイルからの文字列があります。

$data = "string,s example";

アンファーサンドだけに置き換え&てからを呼び出しhtmlspecialchars_decode()、単純なアンファーサンドを「and」という単語に置き換えてみましたが、出力はのようになりstringand#44; exampleます。これらの文字エンコードを正しく変換する方法があるのか​​、それとも正規表現で完全に削除する方法があるのだろうか(単純に削除して、後で確認するための値として使用できるため)?

4

3 に答える 3

5

この特定の文字列は、その「実際の」値を取得するために2回処理する必要がありhtml_entity_decodeます(これらの呼び出しの最初の呼び出しも可能ですhtmlspecialchars_decode)。最初のパスはに変換&され&、2番目のパスはエンティティ,を対応する文字に変換します。

関連するすべてのパラメーターをデコード関数呼び出しに渡すように注意する必要があります(デフォルトはすべての場合に意味がありません)。もちろん、すべての受信データがこの方法でエンコードされていることを確認してください。誤って出力が壊れました。

于 2012-11-03T18:09:14.823 に答える
0

次のようにhtml_entity_decodeを使用します。

$data = html_entity_decode ( html_entity_decode ( $data ) );
于 2012-11-03T18:15:07.323 に答える
0

ネイティブPHPで意図したとおりに機能することはほぼ確実ですが、Laravelコントローラーからビューにフィードされる文字列に適用した場合、受け入れられたソリューションは何もしないように見えます。たとえば、変数をダンプするための唯一の効果的な方法は、メソッドなどprint_r ( $_ENV , true )を介して返された値をフィードしwith、それを囲むpreタグをビューに配置することであることがわかりました。

コントローラ:

$sDebugMessages = '$_ENV = '.  print_r ( $_ENV , true ) ;
return view ( 'Info' )->with ( 'sPageTitle' , 'What is My Praesidium Central Hub?' )->with ( 'sDebugMessages' , $sDebugMessages ) ;

意見:

pre>{{ $sDebugMessages }}</pre>

結果(明らかな理由で編集済み:

$_ENV = Array
(
    [APP_ENV] => local
    [APP_KEY] => xxxxxxxxxxxxxxx
    [APP_DEBUG] => true
    [APP_LOG_LEVEL] => debug
    [APP_URL] => https://localhost
    [DB_CONNECTION] => mysql
    [DB_HOST] => localhost:3306
    [DB_DATABASE] => xxxxxxxxxxxxxxx
    [DB_USERNAME] => xxxxxxxxxxxxxxx
    [DB_PASSWORD] => xxxxxxxxxxxxxxx
    [BROADCAST_DRIVER] => log
    [CACHE_DRIVER] => file
    [SESSION_DRIVER] => database
    [QUEUE_DRIVER] => sync
    [MAIL_DRIVER] => smtp
    [MAIL_HOST] => xxxxxxxxxxxxxxx
    [MAIL_PORT] => 587
    [MAIL_ENCRYPTION] => tls
    [MAIL_USERNAME] => xxxxxxxxxxxxxxx
    [MAIL_PASSWORD] => xxxxxxxxxxxxxxx
    [MAIL_FROM_ADDRESS] => xxxxxxxxxxxxxxx
    [MAIL_FROM_NAME] => xxxxxxxxxxxxxxx
    [MAIL_MODE] => xxxxxxxxxxxxxxx
    [MAIL_MODE_EMAIL] => xxxxxxxxxxxxxxx
)
于 2017-11-22T19:50:40.997 に答える