2012-04-23 3 views
1

Я хотел бы добавить ссылку вокруг моей строки, котораяНайти хэштегом в строке в PHP

"My new Tweet **#new** this is cool". 

И я хотел бы получить хэштегом #new, чтобы обернуть в ссылку.

После этого, я получаю:

"My new Tweet <a href="http://twitter.com/search/%23new">new</a> this is cool. 

Как я могу это сделать?

ответ

2

Попробуйте это:

$string = "My new Tweet **#new** this is cool". 
$linked_string = preg_replace('/\*\*(\#(.*?))\*\*/', '<a href="http://twitter.com/search/$1">$2</a>', $string); 
+0

Вам нужно будет URL-кодировать хэштег в объекте 'href' и HTML, закодировать хэштег внутри тега привязки. – FtDRbwLXw6

1

Предполагая, что ваши hastags содержат только буквы и цифры, вы можете использовать следующий код:

$string = preg_replace('/\*\*#([a-zA-Z0-9]+)\*\*/', '<a href="http://twitter.com/search/%23$1">$1</a>', $string); 

Вы можете легко изменить содержание регулярных выражений по мере необходимости.

+0

Спасибо, но это был пример, я хочу изменить ссылку, но не всегда писать новые, но содержание хэштег. Вы знаете, что я имею в виду? Thanks – Zaidar

+0

Это приведет к уязвимости XSS, если хэштеги управляются пользователем (что является реальной возможностью). – FtDRbwLXw6

+0

вот что делает код. –

1

Это, вероятно, сделать это:

$yourString = 'My new Tweet **#new** this is cool'; 

$yourString = preg_replace_callback('/\*\*(#(.+?))\*\*/', function($matches) { 
    $html = '<a href="http://twitter.com/search/%s">%s</a>'; 
    return sprintf($html, urlencode($matches[1]), htmlentities($matches[2])); 
}, $yourString); 
+0

как применить это к строке? – Zaidar

+0

Я не понимаю ваш вопрос. Он применяется к строке, которую вы ему даете ('$ yourString'). – FtDRbwLXw6

+0

нормально, я не видел весь код. Но я не понимаю, почему он не отображается как ссылка в моем браузере. Спасибо за помощь, действительно! – Zaidar

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