Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
21 / 10 / 4
Регистрация: 02.04.2015
Сообщений: 779

Написать правило для удаления ненужных символов

18.01.2020, 22:12. Показов 3795. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую вас ребята!
Подскажите как написать правильное правило для удаления ненужных символов из ссылки

Есть переменная
PHP
1
$link
в ней ссылка может иметь такой вид и в ней нужно удалить ненужные символы и знаки которые я укажу
вот вид ссылки, но в ней могут быть ненужные символы которые нужно удалить
Alybina-Semenkova

нужно чтобы удаляло именно вот эти знаки и символы, список.
`!@~#№;4$%^&*()_+={}[]'"\|/?<>:

знаю есть функция рубит спецсимволы, но она не совсем то что мне нужно, а нужно именно чтобы было правило, чтобы я сам мог там вписать какие символы удалять.

желательно с минимальной нвгрузкой на ресурсы сервера.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.01.2020, 22:12
Ответы с готовыми решениями:

удаление ненужных символов в тексте
добрый день есть регулярка с заменой в тексте $text = preg_replace('/\]+)\]/',' ', $text); она заменяет на пустую строку как оставить...

Макрос для удаления ненужных контактов
Здравствуйте у меня csv файл с контактами в формате: Имя, Пол, Локация, емаил Артем Попов, Мужской, Москва-Россия, какойто@маил.ру...

Написать программу , для удаления части символов строки заключенную в скобки(вместе с ними). P.s. Строка может быть любая
Помогите пожалуйста.

27
Невнимательный
 Аватар для ft4l
3140 / 1342 / 362
Регистрация: 08.02.2013
Сообщений: 7,869
Записей в блоге: 2
19.01.2020, 17:55
Студворк — интернет-сервис помощи студентам
Для начала нужно понять используется ли у Вас кодировка urf-8 или какая то другая.
В utf-8 символов намного больше чем в однобайтных кодировках текста.
Так же, при попытке прочтения строки как utf-8 , некоторые последовательности байтов являются не валидными...

Во вторых, есть два способа сделать это,
1. заменить всё из перечисленного заменяемого
2. заменить всё что не входит в перечисленное незаменяемое.

Если имеете дело с utf-8 , то наверное второе, например загляните сюда http://wm-school.ru/html/html_utf_cyrillic.html
... это только символы кирилицы представьте сколько можно перечислять ненужного из всех таких наборов символов...

В третьих имя фамилия на разных языках может состоять из абсолютно разных символов
возьмите например фамилию Д'артаньян ))
--------------------------------------------------------------------------
Насчёт замены пробела на тире, preg_replace() тоже может принимать массивы, например
$txt = preg_replace(
['#[^A-Za-zЁА-яё ]+#u', '# +#u'],
['','-'],
$txt );

опять-же неизвестно какие кодировки, неизвестны язык и варианты фамилий типа Римский-Корсаков
и строка из 9086 букв А тоже окажется валидной

Добавлено через 6 минут
Вообще есть два подхода, фильтрация и валидация
при первом тупо заменяется всё что сочтётся не нужным,
при втором просто проверяется, и не принимается, по каким то причинам, типа требует дать другое

Добавлено через 4 минуты
и третье , я бы сказал, фильтрационная валидация
типа принимаете данные фильтруете, сравниваете с исходными, и если отличаются показываете результат отправившему.
как бы может он согласен на такое переименование, а возможно категорически против и хочет попытаться ещё ))
0
21 / 10 / 4
Регистрация: 02.04.2015
Сообщений: 779
19.01.2020, 18:32  [ТС]
Мне всего то надо замену сделать пробела на знак -
и -.php на .php

желательно вложится в один прогон, чтобы дважды не выполнять функцию
для замены пробела на -
PHP
1
$imeifamiliya = preg_replace("[ ]","-", $imeifamiliya);
и -.php на .php
PHP
1
$imeifamiliya = preg_replace("-.php",".php", $imeifamiliya);
Добавлено через 7 минут
хотябы как эти две замены зделать за одно выполнение функции
0
Невнимательный
 Аватар для ft4l
3140 / 1342 / 362
Регистрация: 08.02.2013
Сообщений: 7,869
Записей в блоге: 2
19.01.2020, 18:46
Лучший ответ Сообщение было отмечено serauto79 как решение

Решение

есть куча способов сделать это
PHP
1
2
3
4
5
6
7
<?php
 
$txt='text   Бонч-Бруевич-.php';
 
echo str_replace(['.php', ' '],['-.php', '-'], $txt) ."<br>\n";
echo preg_replace(['#\.php#', '# +#'],['-.php', '-'], $txt) ."<br>\n";
echo preg_replace(['#(?<!-)\.php#', '# +#'],['-.php', '-'], $txt) ."<br>\n";
text---Бонч-Бруевич--.php<br>
text-Бонч-Бруевич--.php<br>
text-Бонч-Бруевич-.php<br>


Добавлено через 9 минут
или имеете ввиду без массивов типа
PHP
1
echo preg_replace('# +|(\.php)#','-$1', $txt) ."<br>\n";
тоже вариант но менее человекопонятный
0
21 / 10 / 4
Регистрация: 02.04.2015
Сообщений: 779
19.01.2020, 19:04  [ТС]
Большое спасибо вам.

Добавлено через 2 минуты
str_replace(['.php', ' '],['-.php', '-'], $txt) ."<br>\n";

скажите такая конструкция будет искать и двойные пробелы и заменять на - ?

Добавлено через 11 минут
а чтобы если несколько пробелов, и их заменило на один знак -
выражение нужно записать так '[ ]' вместо ' '
0
Невнимательный
 Аватар для ft4l
3140 / 1342 / 362
Регистрация: 08.02.2013
Сообщений: 7,869
Записей в блоге: 2
19.01.2020, 19:16
тогда preg_replace )) мне так кажется...
str_replace прямолинейная, даже str_replace([' ', ' ', '.php', ' '],[' ', ' ', '-.php', '-'], $txt)
из 7-и пробелов подряд делает --

upd// в первом массиве первые два элеммента - два пробела
// выбрал не то выделение кода

Добавлено через 10 минут
выражение должно быть заключено в ограничители , например ## или // или []
в Вашем примере[] это просто ограничители, как бы '[ +]'понятнее так
PHP
1
2
3
4
'#[ ]+#'
// и
'# +#'
// равнозначны, так как в в классе всего один символ
0
21 / 10 / 4
Регистрация: 02.04.2015
Сообщений: 779
19.01.2020, 19:43  [ТС]
Я таки и не монял, почему этот вариант

echo preg_replace(['#(?<!-)\.php#', '# +#'],['-.php', '-'], $txt) ."<br>\n";


не удаляет - для -.php

чтобы вывод в браузере был такой

text-Бонч-Бруевич.php
0
Невнимательный
 Аватар для ft4l
3140 / 1342 / 362
Регистрация: 08.02.2013
Сообщений: 7,869
Записей в блоге: 2
19.01.2020, 20:06
Лучший ответ Сообщение было отмечено serauto79 как решение

Решение

Цитата Сообщение от serauto79 Посмотреть сообщение
чтобы вывод в браузере был такой
PHP
1
2
3
$txt='text       Бонч-Бруевич---.php';
 
echo preg_replace(['#-+\.php#', '# +#'],['.php', '-'], $txt) ."<br>\n";
Извиняюсь не внимательно читал
0
21 / 10 / 4
Регистрация: 02.04.2015
Сообщений: 779
19.01.2020, 20:37  [ТС]
спасибо, все как надо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.01.2020, 20:37

Метод для очистки string-переменной от ненужных символов
Друзья, помогите придумать работающий метод. Что имеем В переменной string хранится некое количество неких знаков. Знаки могут...

Как сделать для правило для поля url: адрес строго не содержит последовательность символов /xyz/?
Как сделать для правило для поля-url если адрест строго не содержит последовательность символов /xyz/?

Написать процедуру удаления из строки всех кратных символов
Всем доброго времени суток. Давно просматриваю ваш форум по Паскалю, но вот только сейчас решил зарегистрироваться и прошу помощи в решении...

Правило удаления
Здравствуйте! Ситуация следующая: в IBExpert созданы две таблицы - родительская и дочерняя. При удалении какой-либо записи родительской...

Удаление ненужных символов
Здравствуйте, у меня такой вопрос как можно удалить все от &lt;!-- и до --&gt; количество символов не известно. Если можно выложите сразу...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru