У меня есть веб-сайт, на котором работает оператор PHP if, чтобы показывать контент на основе типа прикрепленного файла, то есть Jpg, Txt, MP4.
Поэтому мой код для отображения файлов TXT:
if($post_attachment == 'txt'){$display_attachment = " <div class=\"sectionDivide\"></div> <div class=\"section\"> <div class=\"articleAttachment\"> include(\"../a/files/attachments/$post_year/$post_month/$post_id.$post_attachment\"); </div> </div> ";}
Проблема в том, что он не отображает содержимое TXT-файла, но вместо этого показывает строку include("../a/files/attachments/2016/11/161123095119.txt");
на моей веб-странице.
Как я могу заставить его отображать содержимое текстового файла, в котором я возвращаю $display_attachment
?
Непосредственный (и грубый) способ заключается в использовании оператора конкатенации строки php ( .
):
$display_attachment = sprintf(' <div class="sectionDivide"></div> <div class="section"> <div class="articleAttachment">' . include("/some/path/to/file") . ' </div> </div> ');
Несколько менее хаотичным, хотя и не совсем читаемым вариантом является использование sprintf()
:
$display_attachment = sprintf(' <div class="sectionDivide"></div> <div class="section"> <div class="articleAttachment"> %s </div> </div> ', include("/some/path/to/file") );
в$display_attachment = sprintf(' <div class="sectionDivide"></div> <div class="section"> <div class="articleAttachment"> %s </div> </div> ', include("/some/path/to/file") );
Чистое решение получило бы результат включения в строковую переменную и использовало бы это.
Отображение содержимого файла include()
является неправильной функцией. include()
будет загружать и выполнять php-код.
Вы должны попытаться использовать fread()
вместо этого, чтобы получить содержимое TXT-файла: http://php.net/manual/en/function.fread.php