За последние 24 часа нас посетили 17085 программистов и 1834 робота. Сейчас ищут 1568 программистов ...

Как удалить из url строки ' " ,* | >,<,^% ' ,но -нужен

Тема в разделе "Регулярные выражения", создана пользователем vasak, 29 июл 2014.

  1. vasak

    vasak Новичок

    С нами с:
    29 июл 2014
    Сообщения:
    7
    Симпатии:
    0
    как удалить из url строки звездчку, двойные кавички, знаки '|' '>','<','^','%' ,но знак '-' нужен
    вообще как заменить на другие символи с помощью
    str_replace или регулярки

    вот такой вариант
    Код PHP
    1
    2
    $uri= str_replace("\"", "", $uri);
    $url = str_replace("\"","'",$url);
    не работают
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.557
    Симпатии:
    631
    Первым аргументом функции str_replace может быть массив лишних символов.
     
  3. vasak

    vasak Новичок

    С нами с:
    29 июл 2014
    Сообщения:
    7
    Симпатии:
    0
    так если знаете напишите правилный вариант,и это не ответ
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Мне просто интересно, не в первый раз уже, почему многие просят готовый вариант?
    Это не знание элементарных вещей или просто лень?
    Что по этой ссылке не понятно?
    php.net/manual/en/function.str-replace.php
     
  5. vasak

    vasak Новичок

    С нами с:
    29 июл 2014
    Сообщения:
    7
    Симпатии:
    0
    я новичек и этот манул уже читал ,но ваш вариант
    $find = array("*", "<", "|", '"');

    $replace=array("");


    $uri = str_replace($find, $replace, $uri);

    уже пробовал,и проверте ваши мысли, потом пишите , все равно не работает
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    ((((
    Покажи url и код которым ты убираешь лишнее.
    Трудно поверить что прочитав примеры которые там приведены не получается сделать.

    дам подсказку не обязательно $replace делать массивом, можно просто ''

    Добавлено спустя 46 секунд:
    но это не влияет на результат просто так чуток правильней.
     
  7. vasak

    vasak Новичок

    С нами с:
    29 июл 2014
    Сообщения:
    7
    Симпатии:
    0
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.557
    Симпатии:
    631
    Код (Text):
    1. $uri = 'http://test500.ru/html-sozdan<ie-sajta.html';
    2. $find = array("*", "<", "|", '"');
    3. $replace=array("");
    4. $uri = str_replace($find, $replace, $uri);
    5. echo $uri; //http://test500.ru/html-sozdanie-sajta.html
    бинго!
     
  9. vasak

    vasak Новичок

    С нами с:
    29 июл 2014
    Сообщения:
    7
    Симпатии:
    0
    и в вверху не видно что я писал тот же вариант [vs] бинго!,не работает
     
  10. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Что именно не работает? Какой символ не удаляет?
     
  11. vasak

    vasak Новичок

    С нами с:
    29 июл 2014
    Сообщения:
    7
    Симпатии:
    0
  12. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Не правда. покажи что ты там сделал.
     
  13. dapperkop

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

    С нами с:
    26 сен 2013
    Сообщения:
    890
    Симпатии:
    0
    Хм... Может быть такой вариант, что твой урл закодирован?

    Добавлено спустя 59 секунд:
    Ты в переменную $url откуда берешь значение?
     
  14. vasak

    vasak Новичок

    С нами с:
    29 июл 2014
    Сообщения:
    7
    Симпатии:
    0
    ves cms kak prikrepit?

    Добавлено спустя 14 минут 3 секунды:
    public static function getControllerAndAction() {

    $uri = $_SERVER["REQUEST_URI"];


    // trim





    // remove unwanted characters



    $uri = preg_replace ("~(\\\|\/\?|\''|\[|\?|\]|\(|\\\$|\))~", "",$uri);
    $uri= str_replace("\w", "", $uri);




    $uri = str_replace('#39;', '', $uri); // удаляем одинарные кавычки
    $uri = str_replace('&quot;', '', $uri); // удаляем двойные кавычки
    $uri = str_replace('', "/%22", $uri);
    $uri = str_replace('&QUOT;', '', $uri);
    $uri =str_replace("/[^A-Za-zА-Яа-яЁё]/g", "",$uri );
    $uri = str_replace("'", "", $uri);
    $uri = str_replace("_", "", $uri);
    $uri = str_replace("!", "", $uri);
    $uri = str_replace("@", "", $uri);
    $uri = str_replace("#", "", $uri);
    $uri = str_replace("}", "", $uri);
    $uri = str_replace('/^', "/", $uri);






    $uri = str_replace("&", "", $uri);
    $uri = str_replace("+", "", $uri);
    $uri = str_replace("_", "", $uri);
    $uri = str_replace("0034", "", $uri);




    $uri = UseSEF::getRequest($uri);
    if (!$uri) return array("Main", "404");
    list($url_part, $qs_part) = array_pad(explode("?", $uri), 2, "");
    parse_str($qs_part, $qs_vars);
    Request::addSEFData($qs_vars);
    $controller_name = "Main";
    $action_name = "index";
    if (($pos = strpos($uri, "?")) !== false) $uri = substr($uri, 0, strpos($uri, "?"));
    $routes = explode("/", $uri);
    if (!empty($routes[2])) {
    if (!empty($routes[1])) $controller_name = $routes[1];
    $action_name = $routes[2];
    }
    elseif (!empty($routes[1])) $action_name = $routes[1];
    return array($controller_name, $action_name);
    }
     
  15. dapperkop

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

    С нами с:
    26 сен 2013
    Сообщения:
    890
    Симпатии:
    0
    $uri = $_SERVER["REQUEST_URI"]; попробуй заменить на $uri = urldecode($_SERVER["REQUEST_URI"]);
     
  16. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Пожалей нас, не надо.

    Покажи урл с которым проблема