@rennamed_user_f22423242

Преобразование строки?

Мне нужно данную строку
https://anvis.iaai.com:443/resizer?imageKeys=29697105~SID~B607~S0~I1~RW2592~H1944~TH0&width=161&height=120


Изменить на
https://anvis.iaai.com:443/resizer?imageKeys=29697105~SID~B607~S0~I1~RW2592~H1944~TH0&width=845&height=633


И что-то ничего не получается
str_replace('&width=161&height=120;', '&width=845&height=633', 'https://anvis.iaai.com:443/resizer?imageKeys=29697105~SID~B607~S0~I1~RW2592~H1944~TH0&width=161&height=120');


Выводится первая строка (не измененная)
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 2
@aleksmir
Системный администратор, программист
Вот так можно:

<?php

$str = 'https://anvis.iaai.com:443/resizer?imageKeys=29697105~SID~B607~S0~I1~RW2592~H1944~TH0&amp;width=161&amp;height=120';
$mas = explode('&', $str);
$mas[1] = 'amp;width=845';
$mas[2] = 'amp;height=633';
$str = implode('&', $mas);
echo($str);

?>


А вообще причина была в том, что у вас точка с запятой лишняя в конце:

'&amp;width=161&amp;height=120;'

Поэтому str_replace() тоже будет работать:

<?php

$str = 'https://anvis.iaai.com:443/resizer?imageKeys=29697105~SID~B607~S0~I1~RW2592~H1944~TH0&amp;width=161&amp;height=120';
$find = '&amp;width=161&amp;height=120';
$replace = '&width=845&height=633';
$res = str_replace($find, $replace, $str);
echo($res);

?>
Ответ написан
Комментировать
Nordic_Alf
@Nordic_Alf
PHP Developer
Вообще лучше писать свой разбивальщик-функцию урлов через parse_url(), а потом собирать опять в урл, потому как параметров может быть разное количество, как и пути разные. Но в этом случае можешь и так:
<?php
$url = 'https://anvis.iaai.com:443/resizer?imageKeys=29697105~SID~B607~S0~I1~RW2592~H1944~TH0&amp;width=161&amp;height=120';
$array = explode('&', $url);

array_walk($array, function ($n)  use (&$newUrl) {
    $newUrl .= str_replace("amp;", '', $n) . '&';
});

var_dump($newUrl);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы