2011-10-07 2 views
4
<?php 
include 'db_connect.php'; 
$q = mysql_real_escape_string($_GET['q']); 
$arr = explode ('+',$q); 

foreach($arr as $ing) 
{ 
echo $ing; 
echo "<br/>"; 
} 

mysql_close($db); 

?> 

콜링 :에코 뉴 라인 PHP에서

findByIncredients.php?q=Hans+Wurst+Wurstel 

소스 코드 HTML :

Hans Wurst Wurstel<br/> 

이유는 단 하나 줄 바꿈이?

+0

사용하십시오 인 print_r ($의 편곡); 배열을 여기에 표시 – Dezigo

+1

'+'가 아닌 공백을 사용하여 폭발시킵니다. –

답변

4

+ s는 URL 인코딩 된 공백입니다. 변수에서 PHP가 보는 것은 "Hans Wurst Wurstel"입니다. 당신은 ','공간으로 분할하지 +

arr = explode (' ',$q); 
1

URL 디코딩에서 "+"가 SPACE로 변환됩니다. 문자열을 get 매개 변수에 str1-str2-str3으로 전달할 수 있습니다.

1

시도가 필요합니다

<?php 
include 'db_connect.php'; 
$q = mysql_real_escape_string($_GET['q']); 
$arr = explode (' ',$q); 

foreach($arr as $ing) 
{ 
echo $ing; 
echo "<br/>"; 
} 

mysql_close($db); 

?> 
0

Hans+Wurst+Wurstel가 URL 쿼리 문자열을 탈출이다. PHP 페이지는 이스케이프 처리되지 않은 한 번 처리 할 가능성이 있습니다 (이 경우 모두 +이 공백으로 변환됩니다). 그 순간의 문자열에 따라 explode의 구분 기호를 선택해야합니다. 문자열 (또는 모든 종류의 변수)이 어떻게 보이는지 모르는 경우 print_r()을 원시 인쇄에 사용할 수 있습니다.

0

쉬운. 표준 RFC 3986 url 인코딩은 역사적인 이유로 "% 20"으로 공간을 인코딩하지만 "+"로 인코딩 될 수도 있습니다. PHP가 쿼리 문자열을 파싱하면 "+"문자가 공백으로 변환됩니다.

은 모두의 존재에 의해 설명된다

  • urlencode : PHP가 내부적으로 사용하는 것에 동등한 변환합니다 ""에서 "+".
  • rawurlencode : RFC 준수 부호기가 "% 20"(으)로 변환됩니다.

공간이 explode 인 것으로 가정합니다. "+"문자를 실제로 인코딩하고 싶다면 rawurlencode 버전 인 "% 2B"를 사용할 수 있으며 항상 작동합니다.

(EDIT)

관련 질문 :