2011-09-13 6 views
0

나는 PHP에서 일하고있다. 나는 쿼리의 resul의 xml을 만들고 싶다.xml 구문 분석을 수행하는 중 PHP 오류가 발생 했습니까?

내 검색 결과 나는 여러 URL을 얻고 있습니다. 이 URL의 xml 파일을 만들 때 URL에 공백과 일부 특수 문자로 인해 문제가 발생했습니다.

URL에 아무런 문제가 없는데도 공백이없는 URL에 대해 동일한 작업을 시도하면 문제가 발생하지 않습니다.

이 내 PHP 프로그램입니다 : -

$rs = mysql_query("SELECT urlofsong FROM music ORDER BY date DESC LIMIT 0,10") or die ("invalid query"); 

//count the no. of columns in the table 
$fcount = mysql_num_fields($rs); 

//you can choose any name for the starting tag 
//echo "$pass"; 
echo ("<result>"); 
while($row = mysql_fetch_array($rs)) 
{ 
echo ("<tablerow>"); 
for($i=0; $i< $fcount; $i++) 
{ 
$tag = mysql_field_name($rs, $i); 
echo ("<$tag>". $row[$i]. "</$tag>"); 
} 
echo ("</tablerow>"); 
} 
echo ("</result>"); 

URL을 만드는 문제의 항목이 유형 : - "http://192.168.1.214/MusicApplication/Songs/RUFF BEAT - Baby_Justin Bieber_DJs 써니 & Puneet (VT) .mp3 "

참고 : - 파일 이름을보십시오.

이 문제를 해결하려면 어떻게해야합니까?

+0

* (관련) * [CRUD 노드와 xml 파일의 노드 값에 대한 간단한 프로그램] (http://stackoverflow.com/questions/4906073/a-simple-program-to-crud-node-and-node -values-of-xml-file) – Gordon

+0

PHP에는 XML을 작성하기위한 내장 라이브러리가 풍부합니다. XML 구문의 모든 미묘함을 수동으로 처리 할 필요는 없습니다. 예를 들어, [XMLWriter] (http://php.net/XMLWriter)를 사용할 수 있습니다. –

답변

1

공백을 % 20으로 바꿔서 파일 이름을 이스케이프해야합니다. 또는 파일 이름에 urlencode()를 사용하십시오.

또한 행 내용을 htmlspecialchars로 이스케이프 처리하면 유효하지 않은 XML로 끝날 수 있습니다.

+0

그런 다음 코드를 사용하여이 공간 % 20 등을 변환하는 절차를 알려주십시오. –

0

내 문제의 해결책입니다. echo ("".htmlentities ($ row [$ i]). "");

은 데이터를 htmlentities()에서 전달해야 함을 의미합니다. 이 함수를 사용하여 특수 문자를 html 문자로 변환 할 수 있습니다.

감사합니다.

관련 문제