url — PHP: fopen (UrlWithWhiteSpaces)

Как видно из названия, я пытаюсь fopen() URL с пробелами. Другие сообщения от stackoverflow на самом деле не помогли, возможно, они устарели?
Я пытался:

  • UrlEncode
  • rawurlencode

Ни одна из вышеперечисленных работ, http://test.com/two - words.jpg это дает мне:

  • UrlEncode: http%3A%2F%2Ftest.com%2Ftwo+-+words.jpg
  • rawurlencode: http%3A%2F%2Ftest.com%2Ftwo%20-%20words.jpg

Когда я пытаюсь четко получить http://test.com/two%20-%20words.jpg , что показывает браузер при вводе http://test.com/two - words.jpg и нажмите ввод.

Какую функцию я должен использовать, чтобы сделать эти преобразования из space в %20 , а также все
другие возможные преобразования, которые мне могут понадобиться (о которых я больше не могу думать, но я почти уверен, что они существуют, возможно, на специальных символах)?

0

Решение

использование preg_replace:

$newUrl = preg_replace('/ /', '%20', 'http://test.com/two - words.jpg');

echo $newUrl;

ВЫХОД

http://test.com/two%20-%20words.jpg

И в качестве альтернативы str_replace:

$newUrl = str_replace(' ', '%20', 'http://test.com/two - words.jpg');

Но в целом вам нужно кодировать больше, чем просто пространство. Я сделал эту функцию, если вы не хотите использовать UrlEncode или же rawurlencode, это то, что вы ищете:

function encodeURI($URI)
{
return str_replace(array('%', '^', '+', '{', '[', '}', ']', '"', '|', '\\', '<', '>', ' '),
array('%25', '%5E', '%2B', '%7B', '%5B', '%7D', '%5D', '%22', '%7C', '%5C', '%3C', '%3E', '%20'), $URI);
}

пример

echo encodeURI('http://test.com/two - ["word<><s.jpg');

ВЫХОД

http://test.com/two%20-%20%5B%22word%3C%3E%3Cs.jpg
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]