James Hill
James Hill

Reputation: 75

Working with strings - PHP

I need some PHP help with strings.

I have a textbox field where users will enter a facebook profile link.

Example: http://facebook.com/zuck

Now the problem is I need to have EXACTLY this string: "http://graph.facebook.com/zuck".

Inputs could be anything like:

http://facebook.com/zuck

http://www.facebook.com/zuck

www.facebook.com/zuck

facebook.com/zuck

What's the best way to do that? Thank you in advance.

Upvotes: 2

Views: 116

Answers (6)

Knossos
Knossos

Reputation: 16068

Something along the lines of:

Pattern:

(https?://)?(www\.)?(.+?)\/([^/]+)

Replace with:

http://graph.$3/$4

Test it here:

http://www.regexe.com/

Upvotes: 0

Matthew
Matthew

Reputation: 48314

To accept anything in the format of facebook.com/username where username is alphanumeric with dots, dashes, and underscores (not sure what Facebook allows exactly):

if (preg_match('%facebook.com/([a-z0-9._-]+)%i', $input, $m))
{
  echo 'http://graph.facebook.com/', $m[1], "\n";
}

Upvotes: 3

Babar Al-Amin
Babar Al-Amin

Reputation: 3984

$url = 'http://facebook.com/zuck';
$array = explode('/', str_replace('http://', '', $url));
$username = $array[1];
$finalurl = 'http://graph.facebook.com/zuck'.$username;

echo $finalurl;

This will work with any format of input URL.

Upvotes: 0

Chris Henry
Chris Henry

Reputation: 12010

Why don't you just ask the user for their username? Instead of accepting a wide variety of input, design the form so that they only have to put in their username.

Something along the lines of this;

enter image description here

This way, you don't even have to validate or store anything other than their username. This could be super helpful down the road when Facebook moves fast and breaks stuff, like the URLs of users. Or if you want to form URLs for something other than graph API, you won't have to pull apart an existing URL.

Upvotes: 2

Zsolt Szilagyi
Zsolt Szilagyi

Reputation: 5016

Find the last slash in the input

$lastpos =  strrchr ( $input , '/' )

Manually concatenate the url and everything after that last slash.

$new_url = 'http://www.facebook.com' . substr($input, $lastpos);

Upvotes: 0

Fabio
Fabio

Reputation: 23510

If given inputs will be always as the ones you give i think that strstr function would hadle this

$array = array('http://facebook.com/zuck', 'http://www.facebook.com/buck', 'www.facebook.com/luck', 'facebook.com/nuck');

foreach($array as $data)
{
    if(strstr($data, 'facebook.com/'))
    {
        echo 'http://graph.'.strstr($data, 'facebook.com/') . '<br>';
    }
}

This will output

http://graph.facebook.com/zuck
http://graph.facebook.com/buck
http://graph.facebook.com/luck
http://graph.facebook.com/nuck

Upvotes: 0

Related Questions