Php удалить все после символа

Удалить текст, который идёт до указанного символа можно через функцию 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 в этом случае).

Читайте также:  Worldoftanks exe world of tanks 32 бита

Вопрос был отредактирован таким образом, чтобы исходный ответ (под правкой) не соответствовал требованиям ОП. Он не был помечен как правка из OP.

РЕДАКТИРОВАТЬ:

Обновил мой ответ, чтобы он теперь соответствовал требованиям ОП:

(Теперь он работает с таким количеством слешей, как вы хотите)

Кто-нибудь может сказать, как удалить символы после? в php. У меня есть один тест строки? = Новый, мне нужно удалить символы, а также = из этой строки.

7 ответов

Если вы хотите оставить знак вопроса, решение будет почти таким же:

Это решение использует простое регулярное выражение для удаления символа ? и всех следующих за ним символов.

Почему бы и нет:

Вы можете сделать это с хорошо написанным регулярным выражением, но гораздо более простой и быстрый способ сделать это — взорвать строку на "?" символ и использовать первый элемент в результирующем массиве.

$ use_this [0] будет "test". Если вы хотите добавить "?" назад, просто объединить:

Вот одна строка:

Вы можете проверить это с помощью следующей командной строки:

substr и strpos

Самый простой способ сделать это с помощью substr() DOC и strpos() DOCs .

Как вы можете видеть substr() извлекает подстроку из строки по индексу и strpos() возвращает индекс первого экземпляра символа, который он ищет (в данном случае ? ).

Третий параметр true указывает функции возвращать все до первого появления второго параметра.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *