За последние 24 часа нас посетил 18621 программист и 1702 робота. Сейчас ищут 892 программиста ...

Регулярки и preg_replace

Тема в разделе "PHP для новичков", создана пользователем kit, 12 фев 2009.

  1. kit

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

    С нами с:
    18 дек 2006
    Сообщения:
    331
    Симпатии:
    1
    Адрес:
    местный
    Люди, пожалуйста помогите создать выражение для preg_replace. Задача следующая: юзер вводит ОАО "Газпром", эта фраза обрабатывается htmlspecialchars-ом, результат обработки ОАО \"Газпром\". Хочу preg_replace-ом либо удалить кавычки до htmlspecialchars, либо удалить обратные слешы после htmlspecialchars. Пишу:
    PHP:
    1.  
    2. <?
    3.     $_POST['heder']=preg_replace('[b]<">[/b]','',$_POST['heder']);
    4.     $_POST['heder']=htmlspecialchars($_POST['heder']);
    5. ?>
    или
    PHP:
    1.  
    2. <?
    3.     $_POST['heder']=htmlspecialchars($_POST['heder']);
    4.     $_POST['heder']=preg_replace('[b]<\>[/b]','',$_POST['heder']);
    5. ?>
    Организмом понимаю, что косяк в выделенных частях, а как правильно не знаю. Хэлп!
     
  2. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    обратные слеши - работа не htmlspecialchars а Magic quotes
     
  3. kit

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

    С нами с:
    18 дек 2006
    Сообщения:
    331
    Симпатии:
    1
    Адрес:
    местный
    Разницы нет чье это дело, вопрос как убрать слеши в тексте не отключая Magic quotes
     
  4. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    а зачем это делать если есть htmlspecialchars_decode или не подходит?
     
  5. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    если узнать откуда это растет можно понять как это побороть:
    PHP:
    1. <?
    2. if (get_magic_quotes_gpc()) $_POST['heder'] = stripslashes($_POST['heder']);
     
  6. Greg1978

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

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    а разве htmlspecialchars(); добавляет слеши?
    она преобразует спец символы в html эквивалент, addslashes(); добавляет символ косой черты.
     
  7. Greg1978

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

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    +1
     
  8. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    PHP:
    1.  
    2. <?php
    3. $string = 'ОАО "Газпром"';
    4. $res = preg_replace('|["]|i','',$string);
    5. echo $res;
    6.  
    7. ---
    8.  
    9. $string = 'ОАО \"Газпром\"';
    10. $res = preg_replace('|[\\\]|i','',$string);
    11. echo $res;
    12.  
     
  9. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    PHP:
    1. <?php
    2.    
    3.     if (get_magic_quotes_gpc()) {
    4.         $_GET = stripslashes_array($_GET);
    5.         $_POST = stripslashes_array($_POST);
    6.         $_COOKIE = stripslashes_array($_COOKIE);
    7.     }
    8.  
    9.     function stripslashes_array($array) {
    10.         foreach ($array as $k => $v) {
    11.             if (is_array($v)) {
    12.                 $array[$k] = stripslashes_array($array[$k]);
    13.             } else {
    14.                 $array[$k] = stripslashes($array[$k]);
    15.             }
    16.         }
    17.    
    18.         return $array;
    19.     }