За последние 24 часа нас посетил 17551 программист и 1313 роботов. Сейчас ищут 1393 программиста ...

Получение двух значений

Тема в разделе "Регулярные выражения", создана пользователем Elect, 5 авг 2015.

  1. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    Вот у меня есть такой код
    Код (PHP):
    1. {group=2} Текст {/group}
    2.  
    Мне нужно от сюда получить и число group= и Текст.
    Каким образом это сделать?
    Мой код
    Код (PHP):
    1. private function ReplaceStringGroup2($tmp_content){
    2.             preg_match_all("/{group=2}(.*){\/group}/s",$tmp_content,$group);
    3.             if(isset($_SESSION['login'])){
    4.                 $user=$_SESSION['login'];
    5.                 global $mysqli;
    6.                 $groups = $mysqli->query("SELECT group_id FROM users WHERE login = '$user'");
    7.                 $groups = $groups->fetch_assoc();
    8.                 if($groups['group_id'] < 3){
    9.                     $tmp_content = str_replace("{group=2}","",$tmp_content);
    10.                     $tmp_content = str_replace("{/group}","",$tmp_content);
    11.                 }else{
    12.                 $tmp_content = str_replace($group[0],"",$tmp_content);
    13.                 }
    14.             }else{
    15.                 $tmp_content = str_replace($group[0],"",$tmp_content);
    16.             }
    17.             return $tmp_content;
    18.         } 
    Возможно,что нужно два preg_match_all использовать?

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Код (PHP):
    1. preg_match('/{group=(\d+)}([^{}]+){\/group}/i', $code, $m);
    2. print_r($m); 
     
  3. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    Спасибо,я вс сделал,с меня +,ток как его тут ставить?)))

    Добавлено спустя 9 минут 18 секунд:
    А ещё вопрос,как сделать что бы допустим несколько параметров указывать можно было. например {page=index,category,или пустой} текст {/page}
     
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    /{page=([a-z,]+)?}([^{}]+){\/page}/i
     
  5. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    Таким образом $m[1] выдаёт index,category, .Каким образом мне проверять page на эти значения?Мне нужно что бы ковычки ставил.
     
  6. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    что значит проверять? нужно чтоб были именно эти? тогда их и прописать в регулярку.
    либо после регулярки сделать explode(',', $m[1]) и проверить каждое отдельно.
    про кавычки тоже непонятно. что нужно то? чтоб регулярка проверяла их наличие или сама их расставляла ?
     
  7. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    Вот смотрите,page = about,contacts,(или пустоте)
    Мне же нужно через if проверять равен ли page этим значениям.И должно быть что-то типо
    Код (Text):
    1. if(isset($_GET['page']) == "указанным значения"){
    Добавлено спустя 5 минут 14 секунд:
    Хорошо бы поделить все значения на м достачноассив,и сделать структуру на проверку максимум трх параметров,этого будет вполне достаточно,переживу
     
  8. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    я же написал.
    регулярка. потом explode(',', $m[1])
    получаем массив с значениями тега page. далее просто проверяем наличие значения в этом массиве. через in_array() например.
     
  9. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    Не получается,вить нужно что бы второй параметр explode был строкой,а не значением массива.
     
  10. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    ну а кто заставляет пользоваться preg_match_all() ?
    тут хватит и preg_match().
     
  11. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    Спасибо большое,я узнал немного нового.
     
  12. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Так делать нельзя, иначе нарветесь на неприятности, isset возвращает тип boolean, а не string.

    Правильно будет:
    Код (PHP):
    1. if(isset($_GET['page']) && 'указанным значения'==$_GET['page']) { 
     
  13. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    да, и + весь смысль isset теряется.