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;
}

随机文章:

1、Discuz!Q 如何更改域名domain?
https://www.onexin.net/discuzq-domain/

2、CentOS 5.3快速搭建Apache+PHP5+MySQL完美Web服务器(LAMP)
https://www.onexin.net/centos-5-3-quickly-build-the-perfect-apache-php5-mysql-web-server-lamp/

3、Wordpress Rewrite / Permalink内部过程分析
https://www.onexin.net/wordpress-rewrite-permalink-internal-process-analysis/

4、正则表达式+常用实例(入门篇)
https://www.onexin.net/regular-expression-common-instance-startup/

5、php中的$_SERVER数组变量
https://www.onexin.net/php%e4%b8%ad%e7%9a%84_server%e6%95%b0%e7%bb%84%e5%8f%98%e9%87%8f/

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

Leave a Reply

Your email address will not be published. Required fields are marked *