1. PHP / Говнокод #5709

    +164

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    $str="T:/home//localhost///MyScripts/////";
    $pos=strpos($str,"//");
    while($pos!=false)
    {
        $str=str_replace("//","/",$str);
        $pos=strpos($str,"//");
    }

    функция удаляет повторяющиеся слэши в строке

    Запостил: Sulik78, 17 Февраля 2011

    Комментарии (53) RSS

    • а эта версия для более чем 2х слэшей
      $path = "T:/home/localhost/MyScripts/FileManager1.0"
      $i = 1;
      while($symbol != '/')
      {
      $symbol = $path{strlen($path) - $i};
      $last_dir = $symbol.$last_dir;
      $i++;
      }
      Ответить
    • зачем удалять слеши, тем более так тупо?

      благодарю тебя господь, что в непидарских языках есть объект File.

      зы: денвераст детектед
      Ответить
    • Ну если бы не одна строка, то вполне ничего так решение, особенно удобно, если более 2х слешей
      $pos=strpos($str,"//");
      А это лишнее, можно было бы в условие while поместить + не !=, а !== раз на то пошло
      Ответить
      • preg_replace?... хм а что это?
        Ответить
        • Бляя)) Ну нуб я, о его существовании я мало что знаю на самом деле... нет, знаю, но работа с ним у меня не ладится...((
          Ответить
          • preg_replace('/\/{2,}/', '/', $subject);

            на сколько я понимаю...
            Ответить
            • preg_replace('/\/\/+/', '/', $subject);
              тоже должно
              Ответить
              • Мне мой больше нравится - так нагляднее. Но это чисто субъективно.
                Ответить
              • /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
                Вот какого члена нельзя использовать другие обозначения паттерна?
                preg_replace('#//+#', '/', $subject);
                Ответить
          • Вот и польза от говнокода.
            Ответить
            • Да, я его посещаю чтобы знать как точно делать не нужно))) Книги + говнокод - не плохое обучение)
              Ответить
          • наверное потому что Вы хотите почитать книгу с совами про регулярные выражения
            Ответить
        • Правильный ответ: "preg_replace?.. неа, не слышал"
          Ответить
          • плять!!
            абстракцией "урл" должен занимаца класс, представляющий урл
            или путь к файлу

            как бльядь можно ВРУЧНУЮ КОСУШКИ ТУДА СЮДА КРУТИТЬ в 2011м году то!!!
            Ответить
            • О чём вы? Это php.
              Ответить
              • Да. Орудиями труда пользуются обезьяны только на природе и в зоопарках для разбивания орехов. Кодомакаки всё делают вручную.
                Ответить
                • у них еще есть такой аргумент: "зачем мне сложные классы? вручную быстрее и проще и скрипт быстрее работает"
                  Ответить
                  • > скрипт быстрее работает
                    А еще памяти меньше жрёт.

                    P.S. Так вот почему приложения на Джаве съедают весь моск всю память!?
                    Ответить
                    • оо))) макаки "40-запросов-на-страницу" заговорили о памяти
                      Ответить
                      • тьфу, на вас. Неужели не видно нити иронии в моём посте?
                        Ответить
              • Скипидара наверное нанюхался, вон как его разнесло капсом.
                Ответить
            • Это кто-то из комментаторов решил, что речь о пути к файлу. А вы решили, что оно не часть класса... Но из кода и сообщения автора этого не видно. Кроме того, PHP вполне себе можно использовать в качестве шелл скриптового языка, и в такой ситуации классы там сто лет в обед не нужны.
              Ответить
              • фейспалм

                >>Это кто-то из комментаторов решил, что речь о пути к файлу
                $str="T:/home//localhost///MyScripts/////"

                >>А вы решили, что оно не часть класса.
                $pos=strpos($str,"//");

                >> в качестве шелл скриптового языка
                http://en.wikipedia.org/wiki/Shell_script

                [quote]
                A shell script is a script written for the shell, or command line interpreter, of an operating system.
                [/quote]

                Вы это
                завязывайте с веществами.
                Ответить
                • Шаг 1: открыть терминал.
                  Шаг 2:
                  $ which php

                  или
                  $ whereis php

                  Шаг 3:
                  в зависимости от результатов и конкретной операционной системы, либо
                  $ vi ~/test.php
                  i
                  #!/usr/bin/php
                  <?php echo 'Hi!'; ?>
                  :wq
                  ~/test.php

                  либо
                  $ sudo apt-get install php #покликать на Tab и посмотреть чего дают, я сто лет назад устанавливал, может что поменялось

                  и вернуться к шагу 2.

                  "T:/home//localhost///MyScripts/////" - может быть именем файла (а точнее директории) только в Виндовс, где такая форма записи скорее не является типичной. Конечно, так можно записать и на -никс системах, но это будет скорее исключением из правила.
                  :)
                  Ответить
                  • Забыл:
                    $ chmod a+x ~/test.php

                    перед тем как запускать, ну или еще вариант, можно так:
                    $ php -r <?php echo 'hi!' ?>
                    Ответить
                    • а под убунту денвера нету чтоли?
                      Ответить
                      • Может и есть, не знаю. Я когда-то давно пробовал LAMPP (тот же XAMPP). Но я не пишу сайты на PHP. :)
                        Ответить
                      • Кому он там нужен? :)
                        Ответить
                  • Вы видимо не вкурсе что шелл-скрипты пишутся на шелле
                    а пхп не является шеллом

                    так что все еще фейл
                    Ответить
                    • Это такой способ потроллить изображая из себя идиота? Ну как хотите... :)
                      Ответить
                      • для альтернативно-одоренных повторяю:

                        шелл-скрипты пишутся на шелле (коммандном интерпретаторе)
                        от того, что Вы запихали пхп в шебанг и написали на нем скрипт -- пхп не стал шеллом
                        таким образом шелл-скрипты на нем не пишутся

                        а изображать идиота рядом с Вами -- занятие неблагодарное
                        так прекрасно как у Вас, у меня все равно это не получится
                        Ответить
                        • Это ваше личное мнение, которое вы почему-то считаете общепринятым, в то время как shell значит "оболочка для общения с другой программой".
                          Кроме того, если вам принципально нужно слово "shell" в названии интерпретатора, то, есть еще и git://github.com/facebook/phpsh.git а так же Windows Script Host (как оказалось), которые могут выполнять PHP скрипт в интерактивном режиме.
                          Кроме того, как вы выражаетесь "писать на шелле" не возможно, шелл - это не язык, можно либо "для", либо "используя".
                          Ответить
                          • у Вас, видимо, с английским не очень.
                            Ничего, с PHPшниками это случается.

                            Еще раз даю цитату:
                            [quote]
                            A shell script is a script written for the shell, or command line interpreter, of an operating system.
                            [/quote]
                            Перевожу: шелл-скрипты это скрипты написанные на шеле или коммандном интерпретаторе операционной системы.

                            причем тут скриптхост-то?
                            на винде шелл один официальный: это cmd
                            на никсах это сиш, баш, кш, ш итд
                            пхп там нет

                            >>писать на шелле" не возможно, шелл - это не язык,
                            кроме того у Вас и с юниксами видимо не очень.
                            на шеле очень даже можно писать шелл-скрипты.

                            даю пример из педовикии:
                            #!/bin/bash
                            for jpg in "$@" ; do                         # use $jpg in place of each filename given, in turn
                                png="${jpg%.jpg}.png"                    # find the PNG version of the filename by replacing .jpg with .png
                                echo converting "$jpg" ...               # output status info to the user running the script
                                if convert "$jpg" jpg.to.png ; then      # use the convert program (common in Linux) to create the PNG in a temp file
                                    mv jpg.to.png "$png"                 # if it worked, rename the temporary PNG image to the correct name
                                else                                     # ...otherwise complain and exit from the script
                                    echo 'error: failed output saved in "jpg.to.png".' 1>&2
                                    exit 1
                                fi                                       # the end of the "if" test construct
                            done                                         # the end of the "for" loop
                            echo all conversions successful              # tell the user the good news
                            Ответить
                            • for the shell -> для шелла... и никак не "на шелле".
                              А вы вот ту страницу, на которую ссылаетесь, прокрутите до низа, там много чего еще интересного написано, и про php в том числе.
                              Ответить
                              • http://en.wikipedia.org/wiki/Bourne_shell

                                "Although it is used as an interactive command interpreter, it was always intended as a scripting language"

                                если Вы только что узнали что на шелле можно писать скрипты -- это не значит что до сегодняшнего дня их нельзя было на нем писать)

                                короче, я понял) любой интерпретируемый язык, запущенный под никсы это шелл скрипт, особенно если в нем не используются объекты)))))
                                дискуссия закрыта, удачного дня, привет пхпклубу
                                Ответить
                            • > command line interpreter
                              "интерпретатор командных строк" же
                              Ответить
                              • коммандной строки)

                                Багминот, Вы-то хотя бы не думаете что на sh нельзя писать скрипты, что php скрипт становица "шел скриптом" если запущен с консоли, и что в этом случае ООП в нем нафиг не нужно?:)
                                Ответить
                                • командных строк, курите ман Нейрон-ДОС 1.0 :р
                                  именно это делает случайную программу, запущенную как шелл оболочкой

                                  PHP нафиг не нужен, свой основной контракт выполняет с трудом, и строить что-то на его базе вообще идиотизм.
                                  Ответить
    • зачем делать двойные прямые(!) слеши, а потом их удалять?
      Ответить
      • Это философский вопрос. Сводится к тому, что зачем проверять пользовательский ввод, если можно сразу всегда всем вводить всё правильно? Или зачем делать обработку ошибок, если можно сразу писать правильно?
        Ответить
        • первая строчка нам ясно говорит, что это не пользовательский ввод, и исключения тут не генерятся
          Ответить
          • Мда-а-а... Первая строчка там исключительно для иллюстрации.
            Ответить
          • это я с форума взял одного там школяр вопрос задал и как сделать и как пример строку дал
            а другой ему такой функцией ответил
            потом еще добавил что надо использовать вторую версию так как она удалит более двух слэшей
            и строка как была так и скопировал.
            а вообще как я понял он пишет некий проект будет он нызваться
            FileManager 1.0 - мега дыра
            Ответить
          • и как раз там и будет генерит`ь`ся это строка.
            Ответить

    Добавить комментарий