I have string with links and iam going to extract links into an array as following
$string = "The text you want to filter goes here. http://google.com, https://www.youtube.com/watch?v=K_m7NEDMrV0,https://instagram.com/hellow/";
preg_match_all('#bhttps?://[^,s()<>]+(?:([wd]+)|([^,[:punct:]s]|/))#', $string, $match);
print_r($match[0]);
results
Array ( [0] => http://google.com [1] => https://www.youtube.com/watch?v=K_m7NEDMrV0 [2] => https://instagram.com/hellow/ )
Now i will use bit.ly API function gobitly() for link shorten that ends with array like this
foreach ($match[0] as $link){
$links[] = gobitly($link);
}
the results of $links[]
Array ( [0] => http://t.com/1xx [1] => http://t.com/z112 [2] => http://t.com/3431 )
Now I want to rebuild the string and replace links to the new one to be like this
$string = "The text you want to filter goes here. http://t.com/1xx, http://t.com/z112,http://t.com/3431";
Advertisement
Answer
Since you know the key of the url to be replaced, you can simply loop over then and use str_replace to replace each shorturl with the original;
<?php
$string = "The text you want to filter goes here. http://google.com, https://www.youtube.com/watch?v=K_m7NEDMrV0,https://instagram.com/hellow/";
preg_match_all('#bhttps?://[^,s()<>]+(?:([wd]+)|([^,[:punct:]s]|/))#', $string, $match);
// Shorten array
$short = [ 'http://t.com/1xx', 'http://t.com/z112', 'http://t.com/3431' ];
// For each url
foreach ($match[0] as $key => $value) {
// Replace in original text
$string = str_replace($value, $short[$key], $string);
}
echo $string;
The text you want to filter goes here. http://t.com/1xx, http://t.com/z112,http://t.com/3431