За последние 24 часа нас посетили 69674 программиста и 10300 роботов. Сейчас ищут 3325 программистов ...

как вывести выражение в двойных кавычках без замены переменных?

Тема в разделе "PHP для новичков", создана пользователем ProgFrog, 11 ноя 2022.

  1. ProgFrog

    ProgFrog Новичок

    С нами с:
    16 янв 2020
    Сообщения:
    9
    Симпатии:
    0
    Например,
    Код (Text):
    1. $x = 1;
    2. $y = "$x текст";
    3. echo $y;
    выводит "1 текст". как из переменной $y вывести "$x текст"?
    есть ли в php у одной и той же переменной способ вывести её как с заменой, так и без замены?
     
  2. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.513
    Симпатии:
    284
    Ну, судя по упоминанию в заголовке двойных кавычек, о существовании одинарных вам известно.
    Тогда разверните вопрос подробней.
    Возможно, вас заинтересует экранирование с помощью \
     
  3. rr33rr

    rr33rr Активный пользователь

    С нами с:
    6 май 2021
    Сообщения:
    36
    Симпатии:
    20
    В переменной $y после обработки интерпретатором php строки кода
    PHP:
    1. $y = "$x текст";
    содержится строка "1 текст", поэтому ее и выводит.
    Никаких упоминаний $x в переменной $y не остается.
    Если нужен вывод строки "$x текст" нужно поместить в $y соответствующее содержимое, например, так:
    PHP:
    1. $y = '$x текст';
    или так
    PHP:
    1. $y = "\$x текст";
    Если нужен вывод строки "$x текст" _без_изменений_ строки
    PHP:
    1. $y = "$x текст";
    То остается самому выполнить роль интерпретатора этой строки кода. ))
    Т.е. прочитать файл с вашим кодом, найти в нем эту строку и, к примеру, как-то выцепить то, что находится между двойных кавычек и поместить искомый результат в переменную $y. Например, как-то так:
    PHP:
    1. <?php
    2. $x = 1;
    3. $y = "$x текст";
    4. echo $y; // выведет "1 текст"
    5. echo "<br />";
    6. $content = file("здесь подставить имя вашего файла.php");
    7. foreach ($content as $line) {
    8.     $pos = strpos($line, '$y = ');
    9.     if (($pos !== false) && ($pos === 0)) {
    10.         $str = substr($line, strpos($line,' "')+2,strlen($line));
    11.         $str = substr($str,0,strpos($str, '";'));
    12.         $y = $str;
    13.         break;
    14.     }
    15. }
    16. echo $y; // выведет "$x текст"
    17. ?>
    Наверняка можно оптимальнее выбрать код между кавычек, например, регуляркой. Но в регулярках я не силен. (
    Не уверен, что это именно то, что вы хотели, но каков вопрос таков ответ ))
     
    #3 rr33rr, 13 ноя 2022
    Последнее редактирование: 13 ноя 2022