Reputation: 447
I have json data, what I parse.
{"response":[14516,{"id":310457,"from_id":-22759696,"to_id":-22759696,"date":1458731719,"post_type":"post","text":"Полиция Бельгии определила трех подозреваемых в теракте в аэропорту<br>.","attachment":{"type":"photo","photo":{"pid":405948296,"aid":-7,"owner_id":-22759696,"user_id":100,"src":"http:\/\/cs628628.vk.me\/v628628040\/41d81\/DciVVyiqqOU.jpg","src_big":"http:\/\/cs628628.vk.me\/v628628040\/41d82\/q2EumplfhhM.jpg","src_small":"http:\/\/cs628628.vk.me\/v628628040\/41d80\/zaETzTkDLUs.jpg","width":600,"height":340,"text":"Original: http:\/\/cdn15.img22.ria.ru\/images\/139461\/56\/1394615611.jpg","created":1458731718,"post_id":310457,"access_key":"62c1447c0497a750ce"}},"attachments":[{"type":"photo","photo":{"pid":405948296,"aid":-7,"owner_id":-22759696,"user_id":100,"src":"http:\/\/cs628628.vk.me\/v628628040\/41d81\/DciVVyiqqOU.jpg","src_big":"http:\/\/cs628628.vk.me\/v628628040\/41d82\/q2EumplfhhM.jpg","src_small":"http:\/\/cs628628.vk.me\/v628628040\/41d80\/zaETzTkDLUs.jpg","width":600,"height":340,"text":"Original: http:\/\/cdn15.img22.ria.ru\/images\/139461\/56\/1394615611.jpg","created":1458731718,"post_id":310457,"access_key":"62c1447c0497a750ce"}}],"comments":{"count":1},"likes":{"count":7},"reposts":{"count":0}}]}
I'm retrieving "src_big":"http://cs628628.vk.me/v628628040/41d82/q2EumplfhhM.jpg" for example. But this image, not in https://, i need to convert to https by the set of rules.
http://cs629401.vk.me/v629401896/3e689/pT5Z5oukzIE.jpg
https://pp.vk.me/c629401/v629401896/3e689/pT5Z5oukzIE.jpg
There u can see I have similar "c629401" and I need to change
to
this Images can be with another link for example
http://cs628628.vk.me/v628628040/41d82/q2EumplfhhM.jpg
https://pp.vk.me/c628628/v628628040/41d82/q2EumplfhhM.jpg
Upvotes: 1
Views: 235
Reputation: 1494
Following code using preg_match should be ok:
<?php
$imgurl = "http://cs629401.vk.me/v629401896/3e689/pT5Z5oukzIE.jpg";
$toremove = Array("s", "S");
preg_match("#http://(.+)\.vk\.me/(.+)#", $imgurl, $matches);
$simgurl = "https://pp.vk.me/" . str_replace($toremove, "", $matches[1]) . "/" . $matches[2];
echo $simgurl . "\n";
https://pp.vk.me/c629401/v629401896/3e689/pT5Z5oukzIE.jpg
You can wrap it in a function to convert urls:
<?php
function convertUrl($url)
{
$toremove = Array("s", "S"); // Letters to remove from matches[1] group
preg_match("#http://(.+)\.vk\.me/(.+)#", $url, $matches);
return "https://pp.vk.me/" . str_replace($toremove, "", $matches[1]) . "/" . $matches[2];
}
echo convertUrl("http://cs629401.vk.me/v629401896/3e689/pT5Z5oukzIE.jpg") . "\n";
https://pp.vk.me/c629401/v629401896/3e689/pT5Z5oukzIE.jpg
Upvotes: 5