в первую очередь это мой php-код. Я пытаюсь получить этот код как текст на выходе. не уверен, как я это делаю. с html мы можем сделать \"
чтобы вставить его внутри php, но как я могу сделать это так, как в моем коде?
<?php $stringData = " // Start here <?php $width = $_GET['width']; $heigh = $_GET['height']; echo 'Hello'; ?> // End here "; ?>
Я отметил эту часть, что хочу получить ее на выходе в виде текста, но когда я ставлю ее на странице, я получаю синтаксическую ошибку, не уверен, почему.
EDIT # 2
ниже приведен мой полный код, и я объясню, как работает мой код и для чего. мой код – создать страницу и поместить что-то внутри этой страницы
<form method="post"> <label>Page Name:</label><br> <input type='text' name='filename' placeholder='page name'> <label>Folders</label> <select name="thisfolder"> <option value="">Default</option> <option value="Folder1">Folder1</option> <option value="Folder2">Folder2</option> <option value="Folder3">Folder3</option> </select><br><br> <label>content</label><br> <input type='text' name='strin' placeholder='content of created page'> <input type='submit' value='Add Feed'> </form> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { // the name of the file to create $filename=$_POST['filename']; // the name of the file to be in page created $strin=$_POST['strin']; // the name of the folder to put $filename in $thisFolder = $_POST['thisfolder']; // make sure #thisFolder of actually a folder if (!is_dir(__DIR__.'/'.$thisFolder)) { // if not, we need to make a new folder mkdir(__DIR__.'/'.$thisFolder); } // . . . /[folder name]/page[file name].php $myFile = __DIR__.'/'.$thisFolder. "/page" .$filename.".php"; $fh = fopen($myFile, 'w'); $stringData = " <?php $width = $_GET['width']; $heigh = $_GET['height']; echo ''; ?> "; fwrite($fh, $stringData); fclose($fh); } ?>
что я пытаюсь сделать, передавая этот PHP-код, который находится внутри $stringData
на эту страницу, которая будет создана
Вы захотите избежать $
в своем тексте.
Установите $stringData
следующим образом:
$stringData = " // Start here <?php \$width = \$_GET['width']; \$heigh = \$_GET['height']; echo 'Hello'; ?> // End here ";
с использованием внутренней функции highlight_string
echo highlight_string($stringData);
или используя htmlspecialchars
echo htmlspecialchars($stringData);
EDIT, если вы не хотите печатать PHP-код буквально на выходе [как вы уже упоминали в своем комментарии]
проблема заключается в том, что вы используете (двойные кавычки) для хранения значений, которые имеют особое значение в php
решение заключается в сохранении текста в одинарных кавычках,
<?php $stringData = ' // Start here <?php $width = $_GET["width"]; $heigh = $_GET["height"]; echo "Hello"; ?> // End here '; ?>
Вы используете двойные кавычки ( "
), которые позволяют использовать $variables
внутри строки, где одиночные кавычки ( '
) не будут.
вот так:
$color = 'red'; $string_one = "My car is $color." echo $string_one; // My car is red. $string_two = 'My car is $color.' echo $string_two; // My car is $color.
Поэтому, чтобы исправить ваш код, вам просто нужно сменить двойные кавычки на одинарные кавычки (а escape [поставить обратную косую черту перед] другими одинарными кавычками).
Вот так:
<?php $stringData = ' // Start here <?php $width = \$_GET[\'width\']; $heigh = \$_GET[\'height\']; echo \'Hello\'; ?> // End here '; ?>
Ваш код
?> // End here must be in out put "; ?>
там не запускается php dellimiter <?php
Правильно:
?> // End here must be in out put <?php "; ?>
Вы измерили еще один php-dellimiter, всего 2:
<?php $stringData = " **?>** // Start here must be in out put <?php $width = $_GET['width']; $heigh = $_GET['height']; echo ''; ?> // End here must be in out put **<?php** "; ?>
В вашем коде я добавил:
<?php $stringData = ' // Start here <?php $width = $_GET["width"]; $heigh = $_GET["height"]; echo "Hello"; ?> // End here '; echo $stringData; ?>
Когда я открыл эту страницу phap, я был в браузере:
// Начало здесь // Конец здесь
В представлении источника страницы у меня было:
// Start here <?php $width = $_GET["width"]; $heigh = $_GET["height"]; echo "Hello"; ?> // End here
Нет ошибки! Теперь я вижу, что вы привыкли.
Этот код с "(строка) $ price" работает:
<?php $price = 10; $stringData = "start here (string) $price end here"; echo $stringData; echo "(string) $price"; ?>