php preg_replace

#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);
  

(заменить на «)