2010-11-19 1 views
0

모두, 이 기능은 버그가 아니며 여기서 확실한 것을 간과하고 있습니다. 그러나 나는 그것을 볼 수 없다.strip_tags는 특정 문자열 내용을 만날 때 조기에 반환합니다 - 왜?

나는 짧은 태그에 싸여 일부 PHP 물건과 후추를 HTML로 구성되어 다음과 같은 코드를 가지고 :

$wtf = <<<WTF 
<h1>First header</h1> 
<p class="intro">First line of text</p> 
<h2>Second header</h2> 
<p>Second line of text</p> 
<?= showImg ('image.jpg'); ?> 
<p>Third line of text</p> 
<?= showImg ('image.jpg', ''); ?> 
<p>Fourth line of text</p> 
<?= showImg ('image.jpg', '', ''); ?> 
<p>Fifth line of text</p> 
<?= showImg ('image.jpg', '', 'class="content"'); ?> 
<p>Sixth line of text</p> 
WTF; 
echo strip_tags ($wtf);[/CODE] 

이 출력 다음

First header 
First line of text 
Second header 
Second line of text 

Third line of text 

Fourth line of text 

Fifth line of text[/CODE] 

당신이 여섯 번째를 볼 수 있듯이 텍스트 행은 출력에 포함되지 않습니다. 범인은

<?= showImg ('image.jpg', '', 'class="content"'); ?> 

또는 오히려 showImg() 호출의 세번째 파라미터 선행하는 라인이다. strip_tags()가이 부분을 만나는 순간, 오류 메시지를 표시하지 않고 종료하고 지금까지 처리 된 텍스트를 반환하기 때문에 어떤 식 으로든 처리 할 데이터의 끝에 도달했다고 생각하게됩니다.

왜?

덧붙여 말하자면, 실행할 때 비트 자체가 정상적으로 작동하고 전체 오류보고도 구문 관련 경고 나 오류를 생성하지 않기 때문에 유효하고 허용되는 구문이라고 생각합니다. 예, 저는 짧은 태그를 사용하는 것이 좋은 아이디어인지 아닌지에 대한 반 종교적인 토론을 알고 있습니다 만, 지금은 그것을 사용하고 있습니다. 왜 제가 알고 싶은 것은 strip_tags가 그 세 번째 매개 변수를 만났을 때 조기에 반환하는 이유입니다. showImg() 호출.

Google, 다른 포럼 및 StackOverflow에서 검색 한 결과 깨달음을 얻지 못했습니다. 아무도 나에게 여기에 무슨 일이 일어 났는지 말해 줄 수 있습니까? 고마워요. 대단히 감사하겠습니다!

// 프랭크

답변

0

문제는 히어 닥 문법 관련이 없습니다; 나는이 예에서 그것을 단지 사용했다. 문제는 strip_tags에 입력 된 문자열 데이터로, 데이터를 얻는 방법에 관계없이 발생합니다. 함수에서 반환되거나, 일반적인 $ string = "fubar"구문을 사용하여 변수에 할당됩니다.

관련 문제