2013-06-01 2 views
2

Мне нужна помощь PHP со строками.Работа со строками - 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 

Что лучший способ сделать это? Заранее спасибо.

+0

Регулярная проверка 'facebook.com/username' выражение будет лучшим выбором, учитывая входы вы перечислили. – Matthew

+0

Как вы это понимаете? Не могли бы вы рассказать? –

+0

Я добавил ответ с регулярным выражением. Это подход с нечетким совпадением, поскольку 'blahblahfacebook.com/asdf/1234' будет соответствовать« asdf ». Но я предполагаю, что вы пытаетесь быть агрессивным в своем согласии. – Matthew

ответ

3

Чтобы принять что-либо в формате facebook.com/username где username является буквенно-цифровой с точками, тире и подчеркивания (не уверен, что Facebook позволяет точно):

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

Блестящий ответ! Спасибо вам большое за это. :) Работал! –

0

Если данные входы будут всегда, как те, которые вы даете я думаю, что strstr функция будет hadle это

$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 
0

Найти последнюю косую черту входа

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

Вручную конкатенация URL-адреса и всего после этой последней косой черты.

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

Почему бы вам просто не попросить пользователя указать свое имя пользователя? Вместо того, чтобы принимать широкий спектр входных данных, создайте форму так, чтобы они могли только ввести свое имя пользователя.

Что-то вроде этого;

enter image description here

Таким образом, вы не должны даже подтвердить или хранить ничего, кроме имени пользователя. Это может быть очень полезно в будущем, когда Facebook быстро перемещается и разбивает материал, например URL-адреса пользователей. Или, если вы хотите сформировать URL-адреса для чего-то другого, кроме графического API, вам не придется выделять существующий URL-адрес.

+0

Ну, ты прав. Но мне нужно будет изменить дизайн, и на самом деле его не попросят сделать. :/Плюс, некоторые люди не знают, как получить свои имена пользователей: P –

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-адресом ввода.

Смежные вопросы