我如何在这个正则表达式中允许 _ 这个函数
How do I allow _ in this regex for this function
我有一个函数非常适合将链接、@tags 和#hashtags 转换为链接,但它不会转换@tags_underscore 或#hashtags_underscore,或带有下划线的链接完全进入链接,因为它省略了内容的 _underscore 部分。
public function convert_instagram_links( $instagram_caption_a_title ) {
// Create links from @mentions, #hashtags and regular links.
$instagram_caption_a_title = preg_replace( '/((http)+(s)?:\/\/[^<>\s]+)/i', '<a href="[=10=]" target="_blank">[=10=]</a>', $instagram_caption_a_title );
$instagram_caption = preg_replace( '/[#]+([0-9\p{L}]+)/u', '<a href="https://www.instagram.com/explore/tags/" target="_blank">[=10=]</a>', $instagram_caption_a_title );
$instagram_caption = preg_replace( '/[@]+([0-9\p{L}]+)/u', '<a href="https://www.instagram.com/" target="_blank">@</a>', $instagram_caption );
return $instagram_caption;
}
如果您想完全允许 Unicode 字母、ASCII 数字和下划线,请使用 [0-9\p{L}_]
而不是 [0-9\p{L}]
。
但是,您可以在这里使用 shorthand \w
class:
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="[=10=]" target="_blank">[=10=]</a>', $instagram_caption_a_title );
$instagram_caption = preg_replace( '/#+(\w+)/u', '<a href="https://www.instagram.com/explore/tags/" target="_blank">[=10=]</a>', $instagram_caption_a_title );
$instagram_caption = preg_replace( '/@+(\w+)/u', '<a href="https://www.instagram.com/" target="_blank">@</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 demo。
请注意,带有 u
修饰符的正则表达式中的 \w
匹配任何 Unicode 字母、数字和下划线(以及一些变音符号和标点符号)。
我有一个函数非常适合将链接、@tags 和#hashtags 转换为链接,但它不会转换@tags_underscore 或#hashtags_underscore,或带有下划线的链接完全进入链接,因为它省略了内容的 _underscore 部分。
public function convert_instagram_links( $instagram_caption_a_title ) {
// Create links from @mentions, #hashtags and regular links.
$instagram_caption_a_title = preg_replace( '/((http)+(s)?:\/\/[^<>\s]+)/i', '<a href="[=10=]" target="_blank">[=10=]</a>', $instagram_caption_a_title );
$instagram_caption = preg_replace( '/[#]+([0-9\p{L}]+)/u', '<a href="https://www.instagram.com/explore/tags/" target="_blank">[=10=]</a>', $instagram_caption_a_title );
$instagram_caption = preg_replace( '/[@]+([0-9\p{L}]+)/u', '<a href="https://www.instagram.com/" target="_blank">@</a>', $instagram_caption );
return $instagram_caption;
}
如果您想完全允许 Unicode 字母、ASCII 数字和下划线,请使用 [0-9\p{L}_]
而不是 [0-9\p{L}]
。
但是,您可以在这里使用 shorthand \w
class:
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="[=10=]" target="_blank">[=10=]</a>', $instagram_caption_a_title );
$instagram_caption = preg_replace( '/#+(\w+)/u', '<a href="https://www.instagram.com/explore/tags/" target="_blank">[=10=]</a>', $instagram_caption_a_title );
$instagram_caption = preg_replace( '/@+(\w+)/u', '<a href="https://www.instagram.com/" target="_blank">@</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 demo。
请注意,带有 u
修饰符的正则表达式中的 \w
匹配任何 Unicode 字母、数字和下划线(以及一些变音符号和标点符号)。