wp文章内url链接识别

举例:后台输入域名:www.onexin.net,前台输出的结果会自动变成http://开头的链接。

email也如此,都被自动识别并添加上了链接。

相关文件:/wp-includes/formatting.php

make_clickable函数

//开启文章识别网址,邮件地址
add_filter( 'the_content', 'make_clickable' );

/**
 * Callback to convert URI match to HTML A element.
 *
 * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
 * make_clickable()}.
 *
 * @since 2.3.2
 * @access private
 *
 * @param array $matches Single Regex Match.
 * @return string HTML A element with URI address.
 */
function _make_url_clickable_cb($matches) {
 $url = $matches[2];

 $url = esc_url($url);
 if ( empty($url) )
 return $matches[0];

 return $matches[1] . "<a href=\"$url\" rel=\"nofollow\">$url</a>";
}


/**
 * Callback to convert URL match to HTML A element.
 *
 * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
 * make_clickable()}.
 *
 * @since 2.3.2
 * @access private
 *
 * @param array $matches Single Regex Match.
 * @return string HTML A element with URL address.
 */
function _make_web_ftp_clickable_cb($matches) {
 $ret = '';
 $dest = $matches[2];
 $dest = 'http://' . $dest;
 $dest = esc_url($dest);
 if ( empty($dest) )
 return $matches[0];

 // removed trailing [.,;:)] from URL
 if ( in_array( substr($dest, -1), array('.', ',', ';', ':', ')') ) === true ) {
 $ret = substr($dest, -1);
 $dest = substr($dest, 0, strlen($dest)-1);
 }
 return $matches[1] . "<a href=\"$dest\" rel=\"nofollow\">$dest</a>$ret";
}

/**
 * Callback to convert email address match to HTML A element.
 *
 * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
 * make_clickable()}.
 *
 * @since 2.3.2
 * @access private
 *
 * @param array $matches Single Regex Match.
 * @return string HTML A element with email address.
 */
function _make_email_clickable_cb($matches) {
 $email = $matches[2] . '@' . $matches[3];
 return $matches[1] . "<a href=\"mailto:$email\">$email</a>";
}

/**
 * Convert plaintext URI to HTML links.
 *
 * Converts URI, www and ftp, and email addresses. Finishes by fixing links
 * within links.
 *
 * @since 0.71
 *
 * @param string $ret Content to convert URIs.
 * @return string Content with converted URIs.
 */
function make_clickable($ret) {
 $ret = ' ' . $ret;
 // in testing, using arrays here was found to be faster
 $ret = preg_replace_callback('#(?<=[\s>])(\()?([\w]+?://(?:[\w\\x80-\\xff\#$%&~/=?@\[\](+-]|[.,;:](?![\s<]|(\))?([\s]|$))|(?(1)\)(?![\s<.,;:]|$)|\)))+)#is', '_make_url_clickable_cb', $ret);
 $ret = preg_replace_callback('#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]+)#is', '_make_web_ftp_clickable_cb', $ret);
 $ret = preg_replace_callback('#([\s>])([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})#i', '_make_email_clickable_cb', $ret);
 // this one is not in an array because we need it to run last, for cleanup of accidental links within links
 $ret = preg_replace("#(<a( [^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i", "$1$3</a>", $ret);
 $ret = trim($ret);
 return $ret;
}

转载请注明出处:https://www.onexin.net/url-link-to-the-article-identified-wp/

随机文章:

1、教您如何读懂SupeSite模块调用代码里的参数
https://www.onexin.net/supesite-teach-you-how-to-read-the-parameters-of-the-module-calling-code/

2、Discuz!X 优化移除CURL中端口减少重定向,修复UC通信失败
https://www.onexin.net/discuzx-curl-uc/

3、Java随机一注双色球代码
https://www.onexin.net/the-java-random-a-note-color-ball-code/

4、PHP设计模式(八)—外观模式(Facade Pattern)
https://www.onexin.net/php-facade-pattern/

5、[个人潜能5A]“为什么”的力量
https://www.onexin.net/personal-potentials-5a-why-the-power-of/

Leave a Reply