2014-11-29 3 views
0

나는 약간의 ID로 변수 $foo을하고 난 다음과 같은 PHP에서 히어 닥 문자열을 사용하려는 :PHP의 Heredoc에서 변수 이름을 벗어나는 방법은 무엇입니까?

$text = <<<TEXT 
    <div id="$foo_bar"></div> 
TEXT; 

명백한 문제는 PHP가 $foo_bar로 히어 닥에서 변수를 구문 분석 인 '물론, 아무튼 존재하지 않습니다. 내가 원하는 것은 $foo 변수를 구문 분석하고 "_bar"는 일반 텍스트로 처리해야합니다.

어떤 종류의 이스케이프 문자를 사용할 수 있습니까 아니면 달성 할 수 있습니까?

P .: 예, Heredoc 대신 인용 된 문자열을 사용할 수 있지만 Hereoc을 사용해야합니다 (텍스트와 코드에 따옴표 등이 있어야합니다).

답변

2

따옴표 붙은 문자열과 마찬가지로 변수 주위에 중괄호를 넣으십시오.

$text = <<<TEXT 
    <div id="{$foo}_bar"></div> 
TEXT; 
+2

'$':'

'다음에 curlies를 열 수도 있습니다. 관용적 인 PHP는 아니지만 쉘과 Perl에서 작동하는 방식과 일치합니다. –

+0

PHP 매뉴얼에 문서화되어 있다고 생각조차하지 않습니다. 필자는 쉘/Perl 호환성을위한 것 일지 모르지만 추천하지는 않습니다. – Barmar

+0

@Barmar 확실 함 [문서화 됨] (http://php.net/manual/en/language.types.string.php#language.types.string.parsing.complex) –

1

$foo을 강제로 사용하려면이 코드를 사용하십시오.

$text = <<<TEXT 
    <div id="{$foo}_bar"></div> 
TEXT; 

중괄호는 내용을 변수로 만듭니다.

또는 HEREDOC 앞에 "_bar"를 붙일 수 있습니다.

$foo = $foo . "_bar"; 
$text = <<<TEXT 
    <div id="$foo"></div> 
TEXT; 
+0

'$ foo'를 다시 사용하는 대신 두 번째 예제에서 새 변수를 사용하는 것이 좋습니다. '$ foobar = $ foo. "_bar";' – Barmar

+0

그럴 수는 있지만,'$ foo'를 다른 용도로 사용하지 않는다면 아무 이유도 없으므로 더 많은 메모리를 사용하게됩니다. – Nerixel

관련 문제