Я пишу небольшой 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, который будет условно переписывать хэштеги в гиперссылки, ТОЛЬКО если они НЕ содержат только числа?