Мой 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?
, Любые идеи о наилучшем способе сделать это?
Благодаря!
Я думаю, что лучше использовать просто str_replace , как говорится в руководстве:
Если вам не нужны фантастические правила замены (например, регулярные выражения), вы всегда должны использовать эту функцию вместо ereg_replace () или preg_replace ().
<? $badUrl = "http://www.site.com/backend.php?/c=crud&m=index&t=care"; $goodUrl = str_replace('?/', '?', $badUrl);
$str = preg_replace('/\?\//', '?', $str);
Изменить: см. Ответ CMS. Уже поздно, я должен знать лучше.
В то время как regexp устраивает здесь просто отлично, я представлю вам альтернативный метод. Это может быть чуть быстрее, чем эквивалентное регулярное выражение, но жизнь – все о выборе (… или что-то еще).
$length = strlen($urlString); for ($i=0; $i<$length; i++) { if ($urlString[$i] === '?') { $urlString[$i+1] = ''; break; } }
Странно, я знаю.
$splitPos = strpos($url, "?/"); if ($splitPos !== false) { $url = substr($url, 0, $splitPos) . "?" . substr($url, $splitPos + 2); }