Как удалить зарезервированный символ Windows в PHP?

Я хотел бы удалить любой зарезервированный символ Windows из моей строки. Я должен удалить эти символы:

\,/,:,*,?,",<,>,|, and spaces

Как удалить эти символы?

Пример:

$string = "21/002-4/ASG* -47";

Результат:

"21002-4ASG-47"
str_replace() это один из способов. Чего вы пытаетесь достичь здесь? Возможно есть лучшие альтернативы.
Qirel 21.03.2019 11:38

Для имени файла?

tshimkus 21.03.2019 11:39

Я не знаю PHP, но он похож на Perl. В Perl это может привести вас на правильный путь: $x = "23*23;jh:k>m"; $y=($x =~ y/\\/:*?"<>//dr). $y удалит все символы из списка $x.

U. Windl 21.03.2019 11:46

У меня есть текст, содержащий эти символы. Я хотел бы удалить их.

ashura91 21.03.2019 11:49

Мы сможем указать вам правильное направление, если вы немного объясните, для чего вы это используете. Есть много путей в Рим, но все они разные.

Qirel 21.03.2019 11:50

Я хотел бы использовать preg_replace. Посмотреть изменить

ashura91 21.03.2019 11:53

И str_replace(), и preg_replace() являются возможными решениями.

Kévin Bibollet 21.03.2019 11:58

теперь у вас есть 2 ответа, вы проверили?

devpro 21.03.2019 12:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
8
70
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
$string = "21/002-4/ASG* -47";
$new = preg_replace('/[\/\:\*\?\"<>\|\s]+/', '', $string);
echo $new;

сделает свое дело, вот живой пример:

https://3v4l.org/b8IiE

https://www.phpliveregex.com/p/rmB

у него ошибка. Сообщение: preg_replace(): Неизвестный модификатор ':'

ashura91 21.03.2019 12:10

Вы также можете получить результат с шаблоном '/[^A-Za-z0-9\-]/', используя preg_replace()

$string='21/002-4/ASG* -47';
echo preg_replace('/[^A-Za-z0-9\-]/', '', $string);

Результат:

21002-4ASG-47

Согласно вашему комментарию, если вы хотите удалить только определенные символы (определенные), то str_replace - другое решение. Еще одна вещь str_replace быстрее, чем preg_replace().

Пример с str_replace():

$string='21/002-4/ASG* -47'; // your string
$char = array('/','*',' '); // defined all characters which need to be removed
echo str_replace($char, "", $string); // result should be 21002-4ASG-47

это удалить все специальные символы? Я хочу удалить зарезервированный символ только из окон и пробелов.

ashura91 21.03.2019 12:07

в соответствии с вашим ожидаемым результатом он удалит все специальные символы @ashura91

devpro 21.03.2019 12:08

да. это стало моим ожидаемым результатом. Но я не хочу удалять все специальные символы, только определенные символы

ashura91 21.03.2019 12:09

для конкретного вы можете использовать str_replace. @ashura91

devpro 21.03.2019 12:10

@ashura91: проверьте пример с обновленным ответом str_replace

devpro 21.03.2019 12:20

Другие вопросы по теме