PHP preg_replace_callback корректное экранирование для обработки хеш-символа ('#') - PullRequest
0 голосов
/ 21 декабря 2011

Я работаю с фидом в Твиттере и хочу превратить любые хэштеги в интерактивный URL.

Хэштегом является хеш-символ ('#'), за которым сразу же следует слово, выступающее в качестве поискового тега, - без пробелов.

Примером может быть ...

@Eutechnyx looking to form a tech group in #Shoreditch next year. Game and Web programmers get in touch. #AutoClubRev

Здесь есть два тега, #Shoreditch и # AutoClubRev.

Эти ссылки должны стать следующими ссылками ...

https://twitter.com/#!/search?q=%23Shoreditch а также https://twitter.com/#!/search?q=%23AutoClubRev

Я предполагаю, что я должен использовать preg_replace_callback здесь, а не просто vanilla preg_replace, так как я пытаюсь взять обратную ссылку ($ 1) и изменить ее, а не просто отобразить ее. Но, конечно, я могу ошибаться. Я не знаю, какую функцию использовать - пока она выполняет свою работу и является относительно эффективной.

Спасибо, Пит

1 Ответ

1 голос
/ 21 декабря 2011

preg_replace должно быть в состоянии сделать это.

$test = "@Eutechnyx looking to form a tech group in #Shoreditch next year. Game and Web programmers get in touch. #AutoClubRev";

echo preg_replace('|#([\w_\d]+)|', '<a href="https://twitter.com/#!/search?q=%23\1">#\1</a>', $test);
...