Как видно из названия, я пытаюсь fopen()
URL с пробелами. Другие сообщения от stackoverflow на самом деле не помогли, возможно, они устарели?
Я пытался:
Ни одна из вышеперечисленных работ, http://test.com/two - words.jpg
это дает мне:
http%3A%2F%2Ftest.com%2Ftwo+-+words.jpg
http%3A%2F%2Ftest.com%2Ftwo%20-%20words.jpg
Когда я пытаюсь четко получить http://test.com/two%20-%20words.jpg
, что показывает браузер при вводе http://test.com/two - words.jpg
и нажмите ввод.
Какую функцию я должен использовать, чтобы сделать эти преобразования из space
в %20
, а также все
другие возможные преобразования, которые мне могут понадобиться (о которых я больше не могу думать, но я почти уверен, что они существуют, возможно, на специальных символах)?
использование 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
Других решений пока нет …