PHP удаляет символ в строке

Мой php слабый, и я пытаюсь изменить эту строку:

http://www.example.com/backend.php?/c=crud&m=index&t=care
                                   ^

быть:

http://www.example.com/backend.php?c=crud&m=index&t=care
                                  ^

удаление / после backend.php?. Есть идеи, как это сделать?

Спасибо!

Вы должны действительно отметить ответ CMS как правильный.

eyelidlessness 05.11.2008 09:50
Стоит ли изучать 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 и хотите разрабатывать...
44
1
193 201
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

$str = preg_replace('/\?//', '?', $str);

Обновлено: см. Ответ CMS. Уже поздно, мне лучше знать.

str_replace ослепительно быстрее, чем регулярное выражение.

pestilence669 02.10.2011 02:01

@Pestilence, поэтому я рекомендовал ответ CMS.

eyelidlessness 02.10.2011 22:21

Хотя здесь вполне подойдет регулярное выражение, я представлю вам альтернативный метод. мощь будет немного быстрее, чем эквивалентное регулярное выражение, но вся жизнь - это выбор (... или что-то в этом роде).

$length = strlen($urlString);
for ($i=0; $i<$length; i++) {
  if ($urlString[$i] === '?') {
    $urlString[$i+1] = '';
    break;
  }
}

Странно, я знаю.

Эээ, а что, если $ urlString [$ i + 1] не является /?

eyelidlessness 05.11.2008 09:45

Отсутствие век: проблема не связана с этим случаем, поэтому и в моем решении это не учитывалось. MDCore: поясните, почему так?

Henrik Paul 05.11.2008 10:16

Я столкнулся с проблемой, когда это полезно. Если ваша строка имеет размер порядка мегабайт (это может случиться), запуск preg_replace или str_replace может привести к поражению вашего php.ini memory_limit. Код pcre_replace в php всегда уменьшает размер строки в 2 раза, прежде чем что-либо делать, поэтому это может быть проблемой.

Bob Gettys 26.03.2009 19:15

Исходя из моего предыдущего комментария, если ваша строка действительно огромна, вы можете использовать некоторые трюки strpos, чтобы найти нужные части, preg_match их, а затем использовать указанную выше нотацию скобок, чтобы исключить символы, которые вам не нужны. Используйте с осторожностью, так как это не быстро, но позволит сэкономить память.

Bob Gettys 26.03.2009 19:16
Ответ принят как подходящий

Я думаю, что лучше использовать просто str_replace, как сказано в инструкции:

If you don't need fancy replacing rules (like regular expressions), you should always use this function instead of ereg_replace() or preg_replace().

<?
$badUrl = "http://www.site.com/backend.php?/c=crud&m=index&t=care";
$goodUrl = str_replace('?/', '?', $badUrl);
$splitPos = strpos($url, "?/");
if ($splitPos !== false) {
    $url = substr($url, 0, $splitPos) . "?" . substr($url, $splitPos + 2);
}

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