2

我需要一些关于字符串的 PHP 帮助。

我有一个文本框字段,用户将在其中输入 facebook 个人资料链接。

示例: http: //facebook.com/zuck

现在的问题是我需要有这个字符串:“ http://graph.facebook.com/zuck ”。

输入可能是这样的:

http://facebook.com/zuck

http://www.facebook.com/zuck

www.facebook.com/zuck

facebook.com/zuck

最好的方法是什么?先感谢您。

4

6 回答 6

3

要接受facebook.com/usernamewhere usernameis alphanumeric with dots, dashes, and underscores 格式的任何内容(不确定 Facebook 究竟允许什么):

if (preg_match('%facebook.com/([a-z0-9._-]+)%i', $input, $m))
{
  echo 'http://graph.facebook.com/', $m[1], "\n";
}
于 2013-06-01T15:27:13.550 回答
2

为什么不直接询问用户的用户名?与其接受各种各样的输入,不如设计表单,让他们只需要输入他们的用户名。

与此类似的东西;

在此处输入图像描述

这样,您甚至不必验证或存储除用户名之外的任何内容。当 Facebook 快速移动并破坏诸如用户 URL 之类的内容时,这可能会非常有用。或者,如果您想为图形 API 以外的东西形成 URL,则不必拆开现有的 URL。

于 2013-06-01T15:23:10.437 回答
0

如果给定的输入将始终与您提供的输入相同,我认为该strstr功能会解决此问题

$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>';
    }
}

这将输出

http://graph.facebook.com/zuck
http://graph.facebook.com/buck
http://graph.facebook.com/luck
http://graph.facebook.com/nuck
于 2013-06-01T15:20:33.897 回答
0

类似于以下内容:

图案:

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

用。。。来代替:

http://graph.$3/$4

在这里测试它:

http://www.regexe.com/

于 2013-06-01T15:36:13.970 回答
0

查找输入中的最后一个斜杠

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

手动连接 url 和最后一个斜杠之后的所有内容。

$new_url = 'http://www.facebook.com' . substr($input, $lastpos);
于 2013-06-01T15:22:42.903 回答
0
$url = 'http://facebook.com/zuck';
$array = explode('/', str_replace('http://', '', $url));
$username = $array[1];
$finalurl = 'http://graph.facebook.com/zuck'.$username;

echo $finalurl;

这适用于任何格式的输入 URL。

于 2013-06-01T15:24:40.833 回答