PHP удаляет символ в строке - PullRequest
33 голосов
/ 05 ноября 2008

Мой 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?. Есть идеи, как лучше всего это сделать?

Спасибо!

Ответы [ 4 ]

107 голосов
/ 05 ноября 2008

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

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

<?
$badUrl = "http://www.site.com/backend.php?/c=crud&m=index&t=care";
$goodUrl = str_replace('?/', '?', $badUrl);
8 голосов
/ 05 ноября 2008
$str = preg_replace('/\?\//', '?', $str);

Редактировать: см. Ответ CMS. Уже поздно, я должен знать лучше.

0 голосов
/ 05 ноября 2008
$splitPos = strpos($url, "?/");
if ($splitPos !== false) {
    $url = substr($url, 0, $splitPos) . "?" . substr($url, $splitPos + 2);
}
0 голосов
/ 05 ноября 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...