Bit.ly link in string omzetten in variabele
http://bit.ly/ab12de)
$patternbitly = '#http://bit\.ly/[a-zA-Z0-9]{6}#';
Als dit patroon is gevonden wil ik dat omzetten naar een variabele zodat ik deze via de API van bit.ly kan omzetten naar de originele URL.
Dat aanroepen en omzetten lukt wel met dit script:
$bitly = new Bitly('<your_login>','<your_api_key>');
echo $bitly->expand('http://bit.ly/b6R4Uf'); // shortcut to print the long url
Hoe kan ik de http://bit.ly/b6R4Uf vervangen door een variabele die gevuld is met een resultaat dat voldoet aan het pratroon?
Ik probeer een script te maken dat zoekt naar het patroon van een bit.ly link (bijvoorbeeld $patternbitly = '#http://bit\.ly/[a-zA-Z0-9]{6}#';
Als dit patroon is gevonden wil ik dat omzetten naar een variabele zodat ik deze via de API van bit.ly kan omzetten naar de originele URL.
Dat aanroepen en omzetten lukt wel met dit script:
$bitly = new Bitly('<your_login>','<your_api_key>');
echo $bitly->expand('http://bit.ly/b6R4Uf'); // shortcut to print the long url
Hoe kan ik de http://bit.ly/b6R4Uf vervangen door een variabele die gevuld is met een resultaat dat voldoet aan het pratroon?
Jens V op 17/01/2011 10:18:10:
Volgens mij zoekt hij preg_replace, zou een beetje suf zijn als hij zelf niet weet hoe hij die methode moet gebruiken waar hij zelf naar verwijst.
Edit: Of preg_replace_callback.
Ik ken preg_replace (een beetje) maar heb daarmee geen methode gevonden om dit voor elkaar te krijgen.
Ja, dat is het punt toch, je wilt van die bit.ly string de url string hebben?
Ja dat is inderdaad de bedoeling.
Moch de prefix steeds hetzelfde zijn.
Bedankt Pim, maar hoe vind ik dan de $url in de string en hoe verder met $key? Ik heb nog niet door waar je heen wilt.
Ik heb ook geen idee wat jij eigenlijk wil ;)
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
if (preg_match($patternbitly, $url) > 0) {
//Is geldige bitly
} else {
//ongeldig
}
?>
if (preg_match($patternbitly, $url) > 0) {
//Is geldige bitly
} else {
//ongeldig
}
?>
Bedoel je zoiets?
Ik snap je probleem namelijk niet helemaal, je hebt de reguliere expressie om het te checken, en die werkt prima, dus ik neem aan dat je iets heel anders bedoelt, en anders mag je de volgende keer eerst even gaan googlen ;)
1) Zoeken in een string naar iets wat voldoet aan het patroon van een bitly URL;
2) Als die gevonden wordt de waarde via de Bitly API laten uitpakken naar de volledige URL.
Voorbeeld:
String= "blablabblabalblabla http://bitly/1a2b3c blablablablablabla"
Dan http://bitly/1a2b3c doorgeven aan bitly API die vervolgens bijvoorbeeld http://www.google.com teruggeeft als volledige URL.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$pattern = "#http://bit\.ly/[a-zA-Z0-9]{6}#";
$string = "Blalb http://bit.ly/b6R4Uf bla http://bit.ly/b9u4Uf";
if (preg_match_all($pattern, $string, $matches)) {
$bitly = new Bitly('<your_login>','<your_api_key>');
foreach ($matches[0] as $match) {
echo $bitly->expand($match) .'<br />';
}
} else {
echo 'geen bit.ly url gevonden';
}
?>
$pattern = "#http://bit\.ly/[a-zA-Z0-9]{6}#";
$string = "Blalb http://bit.ly/b6R4Uf bla http://bit.ly/b9u4Uf";
if (preg_match_all($pattern, $string, $matches)) {
$bitly = new Bitly('<your_login>','<your_api_key>');
foreach ($matches[0] as $match) {
echo $bitly->expand($match) .'<br />';
}
} else {
echo 'geen bit.ly url gevonden';
}
?>
Dit is dus wat je wilt ;)
Volgende keer graag even duidelijk (eventueel met bullets) uitleggen wat je precies wilt, wat je al hebt gedaan, en waar je op vast loopt.
Want we kunnen je nu eigenlijk niet helpen, behalve met jou de code geven.
Veel plezier ermee!
Werkt als een trein. Bedankt. Ik was zo lost in de preg_replace dat ik geen bruikbare code kon geven. preg_match_all had ik nooit ontdekt.