Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/67: Рейтинг темы: голосов - 67, средняя оценка - 4.88
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
1

разбор строки(удаление лишних слешей)

17.02.2011, 19:38. Показов 12240. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
подскажите, как например в строке T:/home//localhost///MyScripts///// заменить все слеши на один, т.е привести к такому виду: T:/home/localhost/MyScripts/
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.02.2011, 19:38
Ответы с готовыми решениями:

Удаление лишних тикетов
Здравствуйте, передо мной стоит такая задача: Человек может отправлять тикеты в тех...

Удаление лишних тегов с текста
<html><body> <?php $st = " <strong>Жирный жираф</strong> <tt>Моноширинный текст</tt> ...

Обрезание строки без лишних символов
И снова вынужден обратиться за помощью. Есть такая задача, обрезать строку до определённой длины....

Удаление лишних слов из строки
Здравствуйте! Есть программа удаления лишних пробелов из строки. Она выглядит так: #include...

11
7 / 7 / 1
Регистрация: 16.02.2011
Сообщений: 12
17.02.2011, 20:03 2
PHP
1
2
3
4
5
6
7
8
$str="T:/home//localhost///MyScripts/////";
$pos=strpos($str,"//");
while($pos!=false)
{
    $str=str_replace("//","/",$str);
    $pos=strpos($str,"//");
}
// str=T:/home/localhost/MyScripts/
2
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
17.02.2011, 20:43  [ТС] 3
а если нужно получить из этой строки: $path = "T:/home/localhost/MyScripts/FileManager1.0"
вот это $last_dir = "/FileManager1.0"
то можно сделать это:
PHP
1
2
3
4
5
6
7
8
$path = "T:/home/localhost/MyScripts/FileManager1.0"
$i = 1;
while($symbol != '/')
      { 
         $symbol = $path{strlen($path) - $i};
         $last_dir = $symbol.$last_dir;
         $i++;
      }
а можно ли как то изящней это сделать?
1
 Аватар для Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
17.02.2011, 21:00 4
PHP
1
$string=preg_replace("/\/\/+/","/",$string);
2
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
17.02.2011, 21:33  [ТС] 5
Цитата Сообщение от Sulik78 Посмотреть сообщение
PHP
1
$string=preg_replace("/\/\/+/","/",$string);
спасибо! а как можно с задачей, которая выше справиться лучше, где нужно имя папки достать до первого слеша с конца?
1
 Аватар для Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
17.02.2011, 21:52 6
попробуй
вроде так
только думаю правильнее по логике это использовать после первого кода
когда уже осталось по одному слэшу
PHP
1
$dirName = preg_replace("/(.*)\/(.*)\/(.*)/", '\\2', $string);
1
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
17.02.2011, 22:27  [ТС] 7
Цитата Сообщение от Sulik78 Посмотреть сообщение
попробуй
вроде так
только думаю правильнее по логике это использовать после первого кода
когда уже осталось по одному слэшу
ну я это и предпологал сделать...

Добавлено через 7 минут
Цитата Сообщение от Sulik78 Посмотреть сообщение
попробуй
вроде так
только думаю правильнее по логике это использовать после первого кода
когда уже осталось по одному слэшу
PHP
1
$dirName = preg_replace("/(.*)\/(.*)\/(.*)/", '\\2', $string);
если
PHP
1
2
$path = "T:/home/localhost/MyScripts/FileManager1.0";
$dirName = preg_replace("/(.*)\/(.*)\/(.*)/", '\\2', $path);
то
PHP
1
$dirName = "MyScripts";
у меня строки всегда такого вида:
PHP
1
$path = "T:/home/localhost/MyScripts/FileManager1.0";
нужно чтобы выдавало
PHP
1
$dirName = "/FileManager1.0";
т.е на конце строки я слеш убираю, а в $dirName, мне нужно чтобы было имя папки со слешем перед именем...

Добавлено через 1 минуту
и еще я в строке убираю последний слеш так:
PHP
1
2
3
4
if ($path{strlen($path) - 1} == "/")
      {
         $path = substr($path, 0, strlen($path) - 1);
      }
а как сделать с помощью регулярных выражений, что то я совсем ничего в них не пойму... =(
1
 Аватар для Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
17.02.2011, 22:31 8
Цитата Сообщение от blackbanny Посмотреть сообщение
нужно чтобы выдавало
Код PHP
1
$dirName = "/FileManager1.0";
т.е на конце строки я слеш убираю, а в $dirName, мне нужно чтобы было имя папки со слешем перед именем...
я подумал что FileManager1.0 это уже файл )

тогда так
PHP
1
$dirName = preg_replace("/(.*)\/(.*)/", '\\2', $string);
Добавлено через 2 минуты
blackbanny, ты дай строку полностью в какой искать
и кусок что ты там хочешь вырезать
так будет понятнее

Добавлено через 11 секунд
blackbanny, ты дай строку полностью в какой искать
и кусок что ты там хочешь вырезать
так будет понятнее
2
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
17.02.2011, 22:47  [ТС] 9
Цитата Сообщение от Sulik78 Посмотреть сообщение
blackbanny, ты дай строку полностью в какой искать
и кусок что ты там хочешь вырезать
так будет понятнее
вообщем есть такая строка $path = "T:\\\\home\localhost\\\MyScripts\\FileManager1.0\\\"
сначала заменяем '\' на '/' : $path = str_replace("\\", "/", $path);
получается: $path = "T:////home/localhost///MyScripts//FileManager1.0///"

потом оставляем только по одной '/' : $path = preg_replace("/\/\/+/","/", $path);
получается: $path = "T:/home/localhost/MyScripts/FileManager1.0/"

потом нужно проверить, есть ли на конце строки '/' если есть, то верезать(как сделать?)
на выходе должно получится: $path = "T:/home/localhost/MyScripts/FileManager1.0"

потом нужно получить имя последней директории со слешем(как сделать?), т.е. $last_dir = "/FileManager1.0"

потом я получаю путь к родительской директории: $path_prev_dir = str_replace($last_dir, "", $path);
получается: $path_prev_dir = "T:/home/localhost/MyScripts"
1
 Аватар для Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
17.02.2011, 23:16 10
blackbanny,

PHP
1
2
3
4
5
6
7
8
9
10
11
12
$string = "T:\\\\home\localhost\\\MyScripts\\FileManager1.0\\\ ";
 
$match = array("/\\\\+/", "/(.*)[\/]/");
$repl = array("/", "\\1");
 
$fullPath = preg_replace($match, $repl, $string);
$prevPath = preg_replace("/(.*)\/.*/", '$1', $fullPath);
$endPath = preg_replace("/.*\/(.*)/", '/$1', $fullPath);
 
echo $fullPath;
echo $prevPath;
echo $endPath;
напишет

T:/home/localhost/MyScripts/FileManager1.0
T:/home/localhost/MyScripts
/FileManager1.0
2
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
18.02.2011, 15:56  [ТС] 11
все таки один вопрос остался, как сделать так чтобы если есть на конце слеш, то мы его удаляем, если нет, то ничего не делаем, т.е. могут быть такие строчки:
T:/home/localhost/LearnPhp - здесь ничего не делаем
или
T:/home/localhost/LearnPhp/ - а здесь удаляем слешь

я делаю так:
PHP
1
2
3
4
if ($path{strlen($path) - 1} == "/")
{
         $path = substr($path, 0, strlen($path) - 1);
}
можно это сделать через preg_replace() ?
0
 Аватар для Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
19.02.2011, 00:49 12
blackbanny,
замени эти массивы
PHP
1
2
$match = array("/\\\\+/", "/(.*)[\/]/", '/[\/]$/');
$repl = array("/", "\\1", "");
0
19.02.2011, 00:49
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.02.2011, 00:49
Помогаю со студенческими работами здесь

Удаление лишних пробелов из строки
Допустим дана строка :" ФЫвфвфв фывфывф фывфв фывфывфыв asasawq" Нужно что бы...

Удаление лишних символов из строки
Подскажите, пожалуйста... Скажем, есть строка "1МоскваФирма ЭКО23.12.2014Иванов И. И.". Как...

Удаление из строки лишних символов
Имеется такая строка: const QString format = "ABC-%0-%1%2-%3-%4%5-%6-%7-%8-%9-%10-%11"; ...

Удаление лишних пробелов в середине строки
Я написал как мог, всё работает, но если вы знаете как упростить код и написать более проще, то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Создание макробота, как способа экономии времени и варианта ИИ.
Hrethgir 28.01.2025
Чисто теоретически, создание ИИ на ПК можно разделить на части. Создать бота отвечающего за железо (эмулирование вкл, выкл, мышь, клавиатура), другой бот осуществляет распознавание изображений,. . .
[Golang] 121. Best Time to Buy and Sell Stock
alhaos 28.01.2025
В этой задаче мы получаем слайс целых чисел, которые означают цену акции в разные моменты времени, и должны вернуть максимально возможную прибыль от купли продажи акции. / / . . .
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru