2012-03-31 3 views
1

그래서 여기에 대한 설명서를 찾을 수 없었습니다. PHP에서 스트림으로 변환하려고하는 일반 텍스트 문자열이 있습니다.stream_get_contents 공백으로 더하기를 대체합니다.

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

이 코드의 출력은 내가 그러나 이것이 어떤 영향을 미칠 것 같지 않은 더하기 기호에 탈출을 추가 preg_replace이다를 사용하여 시도

A bit of text test test2 

입니다. 다른 아이디어? 감사합니다

답변

3

당신은 base64_encode을 사용할 수

$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합니다.

문제의 원인은 그것이 URI이고 HTTP URI가 + 인 것은 인코딩 된 공간이라는 것입니다. 다른 선택은 urlencode (example)입니다.

+0

작동했습니다. 고맙습니다. 왜 다른 방법으로 문제가 발생했는지 아십니까? – tgrosinger

+0

그 편집을 쓰고 있었다 :-) URI는 PHP에 의해 HTTP로 간주되므로'+'는 스트림에 의해 공간으로 디코드됩니다. – cmbuckley

+0

아, 멋지다. 고맙습니다 – tgrosinger

관련 문제