有人可以解释一下这个功能
preg_replace('/&\w;/', '', $buf)
呢?我查看了各种教程,发现它用字符串/&\w;/
替换了模式''
。但我无法理解模式/&\w;/
。它代表什么?
同样在
中preg_match_all("/(\b[\w+]+\b)/", $buf, $words)
我无法理解字符串"/(\b[\w+]+\b)/"
代表什么。
请帮忙。在此先感谢:)
答案 0 :(得分:11)
你的第一个表达的解释很简单,它是:
& # Match the character “&” literally
\w # Match a single character that is a “word character” (letters, digits, and underscores)
; # Match the character “;” literally
第二个是:
( # Match the regular expression below and capture its match into backreference number 1
\b # Assert position at a word boundary
[\w+] # Match a single character present in the list below
# A word character (letters, digits, and underscores)
# The character “+”
+ # Between one and unlimited times, as many times as possible, giving back as needed (greedy)
\b # Assert position at a word boundary
)
preg_replace
函数使用正则表达式。正则表达式允许您以非常强大的方式在文本中查找模式。
为了能够使用preg_replace
或preg_match
等功能,我建议您先了解正则表达式的工作原理。
您可以在此网站上收集大量信息http://www.regular-expressions.info/
您可以使用软件工具来帮助您理解正则表达式(例如RegexBuddy)
答案 1 :(得分:1)
在正则表达式中,\ w代表任何“单词”字符。即:a-z,A-Z,0-9和下划线。 \ b代表“单词边界”,即单词的开头和结尾(一系列单词字符)。
所以,/&\w;/
是一个正则表达式来匹配&标志,后跟一系列单词字符,后跟一个;。例如,&foobar;
将匹配,preg_replace将用空字符串替换它。
以同样的方式,/(\b[\w+]+\b)/
匹配单词边界,后跟多个单词字符,后跟另一个单词边界。使用括号分别捕获单词。因此,这个正则表达式只会将字符串中的单词作为数组返回。