За последние 24 часа нас посетили 18490 программистов и 1708 роботов. Сейчас ищут 903 программиста ...

Замена по регулярному выражению

Тема в разделе "PHP для новичков", создана пользователем Oleksii, 21 апр 2016.

  1. Oleksii

    Oleksii Новичок

    С нами с:
    12 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    PHP:
    1. <?php
    2. switch($_SERVER['REQUEST_URI'])
    3. {
    4.     case "/":
    5.     echo "
    6.    <center>
    7.    <form action='" . BASEPATH . "/core/login.php' method='post'>
    8.    Логин:<br>
    9.    <input type='text' name='login'><br>
    10.    Пароль:<br>
    11.    <input type='password' name='password'><br><br>
    12.    <input type='submit' value='Вход'>
    13.    </form><br><br>
    14.    <a href='/registration'>Регистрация</a><br><br>
    15.    </center>";
    16.     break;
    17.  
    18.     case "/registration":
    19.     echo "
    20.    <center>
    21.    <form action=" . BASEPATH . "'/core/registration.php' method='post'>
    22.    Логин:<br>
    23.    <input type='text' name='login'><br>
    24.    Пароль:<br>
    25.    <input type='password' name='password'><br><br>
    26.    <input type='submit' value='Регистрация'>
    27.    </form><br><br>
    28.    </center>";
    29.     break;
    30.  
    31. }
    32. ?>
    Вставляю этот код через require_once, отображается все нормально, пытаюсь заменить по регулярному выражению, отображает вот так
     

    Вложения:

  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    по какому регулярному выражению? телепатов нет
     
  3. Oleksii

    Oleksii Новичок

    С нами с:
    12 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    preg_replace
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    не какой функцией а какими аргументами этой функции
     
  5. Oleksii

    Oleksii Новичок

    С нами с:
    12 апр 2016
    Сообщения:
    22
    Симпатии:
    0
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну четыре звездочки - не регулярное выражение. нет разделителей, нет шаблона, нет опциональных флагов.
    какой смысл кроется за этими звездочками?
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Что тут вообще происходит?
     
  8. Oleksii

    Oleksii Новичок

    С нами с:
    12 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    звездочки это набор символов, который я ищу и заменяю на нужный мне код. Извиняюсь, завел в заблуждение с регулярным выражением
     
  9. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну если ты ищешь набор из четырех звездочек подставляя их в прег_-функции, то тебе надо сделать из них регулярное выражение про четыре звездочки.
    или не использовать прег_-функции - обычного str_replace хватит.
     
  10. Oleksii

    Oleksii Новичок

    С нами с:
    12 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    %слово%, вот таким образом выглядит выражение у меня, прег находит его и заменяет, только криво, как на скрине. Стр заменяет так же криво
     
  11. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    %слово% - это только половина осмысленного регулярного выражения. проценты обернутся в разделители и будет осуществляться поиск подстроки "слово". попробуй сделать что-нибудь вроде ~%слово%~
     
  12. Oleksii

    Oleksii Новичок

    С нами с:
    12 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    ничего не изменилось
     
  13. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну тогда придется либо самому решать либо выкладывать код как есть без всяких попыток скрыть что-то "важное" (ну естественно без паролей)
     
  14. Oleksii

    Oleksii Новичок

    С нами с:
    12 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    PHP:
    1. <?php
    2. require_once $_SERVER['DOCUMENT_ROOT'] . '/config.php';
    3. class Index
    4. {
    5.     public function getBody()
    6.     {
    7.         echo $this->getHead() .
    8.                     $this->replaceStringMenu() .
    9.                     $this->getFoot();
    10.     }
    11.  
    12.  
    13.     private function getHead()
    14.     {
    15.         $head = file_get_contents(BASEPATH . '/templates/header.php');
    16.         return $head;
    17.     }
    18.     private function getMenu()
    19.     {
    20.         $main = file_get_contents(BASEPATH . '/templates/main.php');
    21.         return $main;
    22.     }
    23.     private function getFoot()
    24.     {
    25.         $foot = file_get_contents(BASEPATH . '/templates/footer.php');
    26.         return $foot;
    27.     }
    28.     private function replaceStringMenu()
    29.     {
    30.         $menu = file_get_contents(BASEPATH . '/core/menu.php');
    31.         $replace_string = str_replace('~%menu%~', $menu, $this->getMenu());
    32.         return $replace_string;
    33.     }
    34.  
    35. }
    36. ?>
    в меню.пхп формы для входа и регистрации и все
     
  15. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а, я тебя понял. ты встраиваешь куски кода одного сценария в другой. типа шаблонизатор пишешь. не получится так. просто посмотри исходный код итоговой страницы и поймешь сколько там необработанного пхп-мусора. потому что пхп-машина уже работает со сценарием и попытка попытка прочитать код другого - будет обработана в обычном текстовом виде. без компиляции и исполнения.
    --- Добавлено ---
    попробуй делать просто include вместо file_get_contents.
     
  16. Oleksii

    Oleksii Новичок

    С нами с:
    12 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    заменил на инклуд , теперь вот так, выражение в блоке меню,а формы отображает просто сверху
     

    Вложения:

  17. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну в какой алгоритм такой и результат. продолжай отладку. ну или тормозни, продумай алгоритм и с нуля напиши.