[英]condition as string inside PHP output buffer
我正在使用ob_start
设置一些内容并将这些内容写入文件。
function get_some_contents(){
ob_start();
?>
<div class="test">
<?php if( isset( $test ) ){
echo 'Sample text';
}?>
</div>
<?php
return ob_get_clean();
}
我需要函数中的内容来写入php文件。 但是,当我写入内容时, if condition
不会写入文件。 相反,它本身在那里执行。 除了将其存储在变量中之外,是否还有其他方法可以将if条件直接添加到缓冲区中而不执行它?
好吧,是的,您正在使用实际的PHP标记,这将导致PHP被解释。 使用其他任何字词都可以避免这种情况:
function get_some_contents(){
return <<<'EOD'
<div class="test">
<?php if( isset( $test ) ){
echo 'Sample text';
}?>
</div>
EOD;
}
function get_some_contents(){
ob_start();
?>
<div class="test">
<?= '<?php'; ?> if( isset( $test ) ){
echo 'Sample text';
}?>
</div>
<?php
return ob_get_clean();
}
把它放到template.php
:
<div class="test">
<?php if( isset( $test ) ){
echo 'Sample text';
}?>
</div>
并根据需要使用file_get_contents
或类似文件从那里读取它。
想法是不要在代码中使用<?php
和?>
标记,而要使用START_PHP
和END_PHP
,这对PHP没有意义。 但是在将代码返回给调用者之前,请执行必要的文本替换操作,用真实的东西替换这些伪指令:
<?php
function get_some_contents(){
ob_start();
?>
<div class="test">
START_PHP if( isset( $test ) ){
echo 'Sample text';
}END_PHP
</div>
<?php
$code = ob_get_clean();
$code = str_replace('START_PHP', '<?php', $code);
$code = str_replace('END_PHP', '?>', $code);
return $code;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.