2012-03-31 20 views
1

Das ist etwas, wo ich keine Dokumentation finden konnte. Ich habe eine einfache Textzeichenfolge, die ich versuche, in einen Strom in PHP umzuwandeln.stream_get_contents Ersetzen plus mit Leerzeichen

$myStr = "A bit of text +test +test2"; 
$stream = fopen('data://text/plain,' . $myStr, 'r'); 
var_dump(stream_get_contents($stream); 

Der Ausgang dieses Codes ist

A bit of text test test2 

Ich versuchte preg_replace mit einem Flucht in die Pluszeichen hinzuzufügen, was jedoch keine Wirkung zu haben schien. Irgendwelche anderen Ideen? Dank

Antwort

3

könnten Sie base64_encode verwenden:

$myStr = "A bit of text +test +test2"; 
$stream = fopen('data://text/plain;base64,' . base64_encode($myStr), 'r'); 
var_dump(stream_get_contents($stream)); 

Here's an example.

Der Grund für das Problem ist, dass es ein URI ist, und in HTTP-URIs ist ein + ein codierter Raum. Ihre andere Wahl ist urlencode (example) zu verwenden.

+0

Das hat funktioniert, danke. Weißt du, warum die andere Methode dieses Problem verursacht hat? – tgrosinger

+0

Ich habe nur diesen Edit geschrieben :-) Der URI wird von PHP als HTTP angenommen, also wird '+' vom Stream in ein Leerzeichen dekodiert. – cmbuckley

+0

Ah, cool. Vielen Dank – tgrosinger

Verwandte Themen