2014-09-11 4 views
0

Я хочу заменить http:// или https:// из моей строки с @.preg_replace, чтобы сделать твитер ID

eg: $twitter_id = 'http://abcuser'; 

результат я хочу '@abcuser'

То, что я пытаюсь это

$twitter_id = 'http://abcuser'; 
$match = '/http:/'; 
$replace = '@'; 
$new_id = preg_replace($match, $replace, $twitter_id); 
echo 'Tweet ID:'.$new_id; 

Но не получаю должного результата. Пожалуйста, помогите.

+0

'$ спичка = '/ HTTP: \/\ //'; '? – Sean

+0

Если вы хотите заменить 'http: //', почему вы просто заменяете 'http:'? – Barmar

ответ

1

No need for regex здесь, используйте str_replace():

$new_id = str_replace(array('http', 'https'), '@', $twitter_id); 
echo 'Tweet ID' . $new_id; // @abcuser 

Если вы сделать решили использовать регулярное выражение здесь, вы можете реализовать это следующим образом:

$pattern = '/(?:http|https):\/\//'; 
$replace = '@'; 
$new_id = preg_replace($pattern, $replace, $twitter_id); 

(?:http|https) является не- группа захвата, соответствующая либо http, либо https, то вы сопоставляете двоеточие и две косые черты (избегая их, если только вы используйте другой шаблонный разделитель).

Вы также можете рассмотреть вариант без учета регистра для обоих вариантов, например. str_ireplace() или /pattern/i (регулярное выражение модификатор)

1

Если вы не возражаете, вы можете также использовать str_replace в этом случае:

$twitter_id = 'http://abcuser'; 
$needles = array('http://', 'https://'); 
$new_id = str_replace($needles, '@', $twitter_id); 
// or use a simple regex 
// $new_id = preg_replace('/(http|https)\:\/\//', '@', $twitter_id); 
echo $new_id; 
Смежные вопросы