В случае, если вы хотите точно разрешить буквы Unicode, цифры ASCII и подчеркивания используйте [0-9\p{L}_]
вместо [0-9\p{L}]
.
Однако, вы можете использовать простой класс \w
здесь:
function convert_instagram_links( $instagram_caption_a_title ) {
// Create links from @mentions, #hashtags and regular links.
$instagram_caption_a_title = preg_replace( '~https?://[^<>\s]+~i', '<a href="$0" target="_blank">$0</a>', $instagram_caption_a_title );
$instagram_caption = preg_replace( '/#+(\w+)/u', '<a href="https://www.instagram.com/explore/tags/$1" target="_blank">$0</a>', $instagram_caption_a_title );
$instagram_caption = preg_replace( '/@+(\w+)/u', '<a href="https://www.instagram.com/$1" target="_blank">@$1</a>', $instagram_caption );
return $instagram_caption;
}
echo convert_instagram_links('@tags_underscore or #hashtags_underscore');
// => <a href="https://www.instagram.com/tags_underscore" target="_blank">@tags_underscore</a> or <a href="https://www.instagram.com/explore/tags/hashtags_underscore" target="_blank">#hashtags_underscore</a>
См. Демоверсию PHP .
Обратите внимание, что \w
в регулярном выражении с модификатором u
соответствует любым буквам Юникода, цифрам, а также подчеркиванию (вместе с некоторыми диакритическими знаками и пунктуацией).