2012-09-11 1 views
5

사용자 지정 템플릿 시스템을 기반으로하는 사이트에서 작업하고 있습니다. 의 템플릿에 내가 태그를 사용할 수 있습니다한다고 가정 해 봅시다 [custom_text]는 출력 할 CMS의 서식있는 텍스트 편집기를 통해 정의 같은 HTML의 전체 블록은 :두 유형의 따옴표를 모두 포함하는 텍스트 블록이

<b>Lorem ipsum dolor</b> sit amet, "consectetur adipisicing elit"<br /><br /> 
<b>sed doeiusmod</b> tempor incididunt ut's labore et dolore magna's aliqua. 

은 따옴표의 두 가지 유형이 포함되어 있습니다 그 안에. 템플릿 시스템이있는 CMS가 인코딩되므로 실제로 페이지에 출력하는 것 이외의 템플릿 시스템에서 나오는 모든 것을 사전 처리 할 수 ​​없습니다.

이제 코드에서 모든 줄 바꿈을 제거하는 등 실제로 해당 블록을 조작해야합니다. 페이지에서 php를 사용할 수는 있지만 그 코드 블록을 포함 할 문자열을 정의 할 수는 없습니다. 내가 어느 쪽이든하면 :

$string = "[custom_text]"; 
$string = '[custom_text]'; 

블록의 따옴표는 문자열을 조기에 끝내게됩니다. 이 문제를 해결할 분명한 방법이 있습니까?

+1

'addslashes()'가 도움이되지 않습니까? – hjpotter92

+0

참조 http://stackoverflow.com/questions/5611468/is-there-a-php-function-that-only-adds-slashes-to-double-quotes-not-single-quote –

답변

3

내가하지 않은 이유를 알고하지 마십시오이 링크에서이 하나

<?php 
$string = "This string has 'single quotes'"; 
echo addcslashes($string, '"\\'); 
?> 

출력이 될 것인가처럼

This string has 'single quotes' 

다음은이 대답을보십시오 이것에 대해 전에 생각했지만 heredoc 구문을 사용하기 만하면됩니다.

$string = <<<EOT 
[custom_text] 
EOT; 

이 문제를 해결합니다.

+0

좋은 답변 그 작업 –

0
+0

그러나 이것은 효과가있었습니다. 문자열에 넣어야하는 텍스트 블록에는 이미 두 가지 유형의 따옴표가 있으며 출력하기 전에 어떤 방식 으로든 사전 처리 할 수는 없습니다. 내가 문자열을 정의하기 위해 작은 따옴표를 사용한다면, 그것은 이런 식으로 끝날 것 : $ 문자열 = 'LOREM의 Ipsum 제품의 슬픔는 incididunt 유타의 labore 등 dolore tempor

나오지 doeiusmod "consectetur adipisicing ELIT", AMET 앉아 magna의 aliqua. '; 보시다시피, 텍스트 블록의 아포스트로피는 문자열 정의의 작은 따옴표를 효과적으로 닫습니다. – prezes

+0

내가 그 문자열을 어디에서 얻었는지 알 수 있습니까? –