首页 / PHP / 使用PHP将纯文本URL转换为活动链接
使用PHP将纯文本URL转换为活动链接
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用PHP将纯文本URL转换为活动链接,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5120字,纯文字阅读大概需要8分钟。
内容图文
![使用PHP将纯文本URL转换为活动链接](/upload/InfoBanner/zyjiaocheng/712/d995f86f7b5b4d9cab95bcf569ae202e.jpg)
我是新手.我想知道怎么做,因为我一直想和我的朋友开个玩笑.你能回答吗?谢谢!
解决方法:
你可能想知道它是如何工作的.我将尝试通过各种方法解释它应该如何完成.我们将首先介绍正则表达式的工作原理及其使用方法.
正则表达式 – 正则表达式
In computing, a regular expression (abbreviated regex or regexp) is a
sequence of characters that forms a search pattern, mainly for use in
pattern matching with strings, or string matching, i.e. “find and
replace”-like operations.
基本语法
要首先使用正则表达式,您需要学习语法.此语法由一系列字母,数字,点,连字符和特殊符号组成,我们可以使用不同的括号将它们组合在一起.
^ The circumflex symbol matches the beginning of the input string or line, although in some cases it can be omitted
$ Same as with the circumflex symbol, the dollar sign matches the end of the input string or line
. The period matches any single character
? It will match the preceding pattern zero or one times
+ It will match the preceding pattern one or more times
* It will match the preceding pattern zero or more times
| Boolean OR
- Used when describing a range of elements
() Groups pattern elements together
[] Matches any single character between the square brackets
{min, max} Used to match exact character counts, where min and max are integers
\d Matches any single digit
\D Matches any single non digit caharcter
\w Matches any alpha numeric character including underscore (_)
\W Matches any non alpha numeric character excluding the underscore character
\s Matches any single whitespace character
括号
在正则表达式的上下文中使用时,Brackets []具有特殊含义.它们用于查找一系列字符.
[0-9] Matches any decimal digit from 0 through 9.
[a-z] Matches any character from lowercase a through lowercase z.
[A-Z] Matches any character from uppercase A through uppercase Z.
[a-Z] Matches any character from lowercase a through uppercase Z.
例子
让我们来看看如何正确使用运算符.我们将以hello这个词为例.
/hello/ Matches the word hello
/^hello/ Matches hello at the start of a string. Possible matches are hello or helloworld, but not worldhello
/hello$/ Matches hello at the end of a string or line.
/he.o/ Matches any character between he and o. Possible matches are helo or heyo, but not hello
/he?llo/ Matches either hllo or hello
/hello+/ Matches hello one or more times. E.g. matches hello or hellohello
/he*llo/ Matches llo, hello or hehello, but not hellooo
/hello|world/ Matches either hello or world
/(A-Z)/ Using the hyphen character to denote a range, matches every uppercase character from A to Z. E.g. A, B, C…
/[abc]/ Matches any single character a, b or c
/abc{1}/ Matches precisely one c character after the characters ab. E.g. matches abc, but not abcc
/abc{1,}/ Matches one or more c character after the characters ab. E.g. matches abc or abcc
/abc{2,4}/ Matches between two and four c character after the characters ab. E.g. matches abcc, abccc or abcccc, but not abc
最常见的
[^a-zA-Z] Matches any string not containing any of the characters ranging from a through z and A through Z.
p.p Matches any string containing p, followed by any character, in turn followed by another p.
^.{2}$ Matches any string containing exactly two characters.
<b>(.*)</b> Matches any string enclosed within <b> and </b>.
p(hp)* Matches any string containing a p followed by zero or more instances of the sequence hp.
正则表达式匹配URL
首先让我们看看如何构建URL.我们只有几个选择:
> http://example.com/
> https://example.com/
> ftp://example.com/
> www.example.com
> user@example.com
> 127.0.0.1
> http://example.com:8080/
http://,https://,ftp,www,mail,ip和port.
方法1(1/10分)
// Only mails
$match = preg_match('/[^\x00-\x20()<>@,;:\\".[\]\x7f-\xff]+(?:\.[^\x00-\x20()<>@,;:\\".[\]\x7f-\xff]+)*\@[^\x00-\x20()<>@,;:\\".[\]\x7f-\xff]+(?:\.[^\x00-\x20()<>@,;:\\".[\]\x7f-\xff]+)+/', $string, $array);
方法2(5/10分)
// Without ports, www-s, ip-s and mails
$text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\">\\0</a>", $text);
方法3(10/10分)
/* Proposed by:
* S?ren L?vborg
* https://stackoverflow.com/users/136796/soren-lovborg
*/
$rexProtocol = '(https?://)?';
$rexDomain = '((?:[-a-zA-Z0-9]{1,63}\.)+[-a-zA-Z0-9]{2,63}|(?:[0-9]{1,3}\.){3}[0-9]{1,3})';
$rexPort = '(:[0-9]{1,5})?';
$rexPath = '(/[!$-/0-9:;=@_\':;!a-zA-Z\x7f-\xff]*?)?';
$rexQuery = '(\?[!$-/0-9:;=@_\':;!a-zA-Z\x7f-\xff]+?)?';
$rexFragment = '(#[!$-/0-9:;=@_\':;!a-zA-Z\x7f-\xff]+?)?';
function callback($match)
{
// Prepend http:// if no protocol specified
$completeUrl = $match[1] ? $match[0] : "http://{$match[0]}";
return '<a href="' . $completeUrl . '">'
. $match[2] . $match[3] . $match[4] . '</a>';
}
$text = preg_replace_callback("&\\b$rexProtocol$rexDomain$rexPort$rexPath$rexQuery$rexFragment(?=[?.!,;:\"]?(\s|$))&",
'callback', htmlspecialchars($text));
你可以在我的答案中写下自己的想法.
我正在写…
内容总结
以上是互联网集市为您收集整理的使用PHP将纯文本URL转换为活动链接全部内容,希望文章能够帮你解决使用PHP将纯文本URL转换为活动链接所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。