Содержание
Удалить текст, который идёт до указанного символа можно через функцию strstr() .
Удалить текст, который идёт после указанного символа можно также через функцию strstr() , но добавив третий параметр true .
Вариант через регулярное выражение (указан в качестве примера, рекомендуется использовать strstr() ):
Как я могу удалить все содержимое строки после последнего появления символа косой черты / ?
Например, строка выглядит так:
Я хочу удалить весь контент после последнего / так что это просто показывает:
Но содержание после / может быть переменной длины.
Обратите внимание, что в URL может быть любое количество слешей. Он должен быть в состоянии удалить контент после последней косой черты. Там может быть больше, чем показано в примере выше.
Решение
ты можешь попробовать это
Другие решения
Решение № 1, используя substr() + strrpos() :
функция strrpos() находит положение прошлой появление / в строке, substr() извлекает необходимую подстроку.
недостаток: если $string не содержит ‘/’ , strrpos() возвращается FALSE а также substr() не возвращает то, что мы хотим. Необходимо проверить значение, возвращаемое strrpos() первый.
Решение № 2, используя explode() + implode() :
В качестве альтернативы вместо array_pop($array) мы можем сделать последний компонент пустым, и нет необходимости добавлять дополнительные ‘/’ в конце:
недостаток (для обеих версий): если $string не содержит ‘/’ , explode() создает массив, содержащий одно значение, а остальная часть кода производит либо ‘/’ (первый кусок кода) или пустая строка (вторая). Необходимо проверить количество элементов в массиве, произведенном explode() ,
Решение № 3, используя preg_replace() :
Недостатки: никто. Это хорошо работает, когда оба, когда $string содержит ‘/’ и не содержит ‘/’ (это не меняет $string в этом случае).
Вопрос был отредактирован таким образом, чтобы исходный ответ (под правкой) не соответствовал требованиям ОП. Он не был помечен как правка из OP.
РЕДАКТИРОВАТЬ:
Обновил мой ответ, чтобы он теперь соответствовал требованиям ОП:
(Теперь он работает с таким количеством слешей, как вы хотите)
Кто-нибудь может сказать, как удалить символы после? в php. У меня есть один тест строки? = Новый, мне нужно удалить символы, а также = из этой строки.
7 ответов
Если вы хотите оставить знак вопроса, решение будет почти таким же:
Это решение использует простое регулярное выражение для удаления символа ? и всех следующих за ним символов.
Почему бы и нет:
Вы можете сделать это с хорошо написанным регулярным выражением, но гораздо более простой и быстрый способ сделать это — взорвать строку на "?" символ и использовать первый элемент в результирующем массиве.
$ use_this [0] будет "test". Если вы хотите добавить "?" назад, просто объединить:
Вот одна строка:
Вы можете проверить это с помощью следующей командной строки:
substr и strpos
Самый простой способ сделать это с помощью substr() DOC и strpos() DOCs .
Как вы можете видеть substr() извлекает подстроку из строки по индексу и strpos() возвращает индекс первого экземпляра символа, который он ищет (в данном случае ? ).
Третий параметр true указывает функции возвращать все до первого появления второго параметра.