Регулярное выражение для условной замены хэштегов Twitter гиперссылками

Я пишу небольшой PHP-скрипт, чтобы получить последние полдюжины обновлений статуса Twitter из пользовательской ленты и отформатировать их для отображения на веб-странице. В рамках этого мне нужно заменить регулярное выражение, чтобы переписать хэштеги как гиперссылки на search.twitter.com. Сначала я пытался использовать:

\2', $strTweet);
?>

(взято из https://gist.github.com/445729 )

В ходе тестирования я обнаружил, что #test преобразуется в ссылку на Веб-сайт Twitter, а № 123 - нет. После недолгого поиска в Интернете и экспериментов с различными тегами я пришел к выводу, что хэштег должен содержать буквенные символы или подчеркивание где-нибудь в нем, чтобы образовывать ссылку; теги, содержащие только числовые символы, игнорируются (предположительно, чтобы предотвратить связывание таких вещей, как «Хорошая презентация, Боб, слайд №3 был моим любимым!»). Это делает приведенный выше код некорректным, так как он с радостью преобразует # 123 в ссылку.

Я давно не делал много регулярных выражений, поэтому из-за своей ржавости я придумал следующее PHP-решение:

 0) {
  foreach ($arrHashtags[2] as $strHashtag) {
    // Check each tag to see if there are letters or an underscore in there somewhere
    if (preg_match('/#\d*[a-z_]+/i', $strHashtag)) {
      $test = str_replace($strHashtag, ''.$strHashtag.'', $test);
    }
  }
}

echo $test;
?>

Оно работает ; но это кажется довольно длинным для того, что он делает. У меня вопрос, есть ли единственный preg_replace, похожий на тот, который я получил от gist. github, который будет условно переписывать хэштеги в гиперссылки, ТОЛЬКО если они НЕ содержат только числа?

9
задан foxsoup 25 November 2010 в 12:28
поделиться