#php #preg-replace
#php #предварительная замена
Вопрос:
$flr = preg_replace("/\'/","'",$flr);
Если URL имеет этот символ: ‘, он был заменен на ‘, и URL должен стать http://localhost/’
Но это не работает. Например:
$flr = preg_replace("/\"/",""",$flr);
замена URL работает, и я получаю http://localhost/»
Тогда почему первый пример не работает?
Для тестирования я использую:
function isValidFLR(amp;$flr) {
$flr = preg_replace("/\'/","'",$flr);
$flr = preg_replace("/\"/",""",$flr);
echo $flr;
die();
}
Комментарии:
1. почему бы тебе не попробовать rawurlencode
Ответ №1:
Это то, о чем вы просите просто urlencode()
?
Если вы просто хотите заменить пару определенных символов, возможно, вам следует попробовать использовать str_replace()
вместо этого.
Ответ №2:
$flr = preg_replace("/'/","'",$flr);
будет работать.
Но, как говорили другие, одна из функций PHP, которая делает это, могла бы быть лучшим решением.
Ответ №3:
У вас возникли проблемы с экранированием строк в кавычках в PHP, которые смешиваются с экранированием регулярных выражений. В итоге может получиться очень беспорядочная последовательность обратных косых черт!
Самое прямое решение вашей проблемы — просто использовать одинарные кавычки в строке регулярного выражения при поиске двойных кавычек:
$flr = preg_replace('/\"/',""",$flr);
Однако в вашем случае возникает вопрос о еще более простом решении: зачем вам вообще нужно использовать regex в этом случае? Простой str_replace()
справился бы с этой задачей так же хорошо и позволил бы избежать всех этих вызывающих недоумение косых черт.
Ответ №4:
Как насчет тестирования со следующим :
$flr = preg_replace("/\"/","'",$flr);
(заменить ‘ на «)