2012-01-22 4 views
0

배열을 에코 할 때 문제가 있습니다.배열을 에코 할 수 없습니다.

$test = 'one two three four'; 
$arr = explode(' ', $test); 

echo '<br />+'.$arr[0].' +(>'.$arr[1].' <'.$arr[2].''; 

$ arr [1]에서 에코가 멈추고 mysql의 특수 쿼리에이 작업이 필요합니다. 내가 달성하기 위해 필요한 것은

은 다음과 같습니다 또한

('+one +(>two <three) 

, 나는 [2]로 편곡 $에서 "<"문자를 사용하는 방법을 알고 싶습니다 ~. 그래서 짧은에, 내가 무엇을 달성하기 위해 트링하고있어입니다 :

('+one +(>two <three <four ... <infinite) 

답변

7

그것은 브라우저 그냥 실수에게 태그의 시작에 대한 < 문자를 반향 중지하고 그에 따라 역할을하지 않습니다.

디스플레이에을 표시하려면 먼저 htmlspecialchars을 호출해야합니다. 그렇지 않은 경우 (예 : 쿼리의 경우) 특별한 대우가 필요하지 않습니다.

마지막 질문에 대한

: 당신은 '&lt;&gt;<>를 교체

$test = 'one two three four five'; 
$arr = explode(' ', $test); 

$out = '+'.$arr[0].' +(>'.$arr[1].' <'.implode(' <', array_slice($arr, 2)).')'; 
echo htmlspecialchars($out); // only for echoing! 
+0

존 감사합니다. 방금 내 문제를 고쳤습니다. array_slice 팁 덕분에, 전혀 사용하지 않고 새로운 것을 배웠습니다. 나는 너의 대답을 받아 들였다. 다시 한 번 감사드립니다. –

0

뭔가를 할 거라고. 코드의

2

원시 출력 :

<br />+one +(>two <three

브라우저 <three 태그라고 생각합니다. html 특수 문자를 사용하십시오.

0
$test = 'one two three four five six ...'; 
$arr = explode(' ', $test); 
$total = count($arr); 

if ($total < 3) { 
    echo 'Less than three elements found.'; 
    exit; 
} 

$tmp = '(+' . $arr[0] . ' +(>' $arr[1]; 

for ($i = 2; $i < $total; ++$i) { 
    $tmp .= ' <' . $arr[$i]; 
} 

$tmp .= ')'; 

echo $tmp; 

이것은이를 수행하는 한 가지 방법입니다. 다른 많은 방법이 있습니다.

관련 문제