很抱歉这是一个非常基本的问题,但根本没有简单的方法可以在Google或nor here中搜索 SymbolHound这样的字符串。还没有在PHP手册(Pattern Syntax& preg_replace)中找到答案。
此代码位于接收$content
和$length
参数的函数内
preg_replace
用于什么?
$the_string = preg_replace('#\s+#', ' ', $content);
$words = explode(' ', $the_string);
if( count($words) <= $length )
另外,使用str_word_count
会更好吗?
答案 0 :(得分:4)
此模式使用单个常规空格('')替换连续的空格字符(注意,不仅仅是空格,还包括换行符或制表符)。 \s+
说“匹配一个序列,由一个或多个空格字符组成”。
#
符号是该模式的分隔符。可能更常见的是看到由正斜杠划分的模式。 (实际上你可以在没有分隔符的情况下在PHP中执行REGEX,但这样做会影响模式的处理方式,这超出了这个问题/答案的范围。)
http://php.net/manual/en/regexp.reference.delimiters.php
依靠空格来查找字符串中的单词通常不是最佳方法 - 我们可以使用\b
字边界标记。
$sentence = "Hello, there. How are you today? Hope you're OK!";
preg_match_all('/\b[\w-]+\b/', $sentence, $words);
这就是说:抓住大字符串中的所有子串,这些子串只包含字母数字字符或连字符,并且被字边界包围。
$words
现在是句子中使用的一系列单词。
答案 1 :(得分:1)
\s+
用于匹配多个空格。
您正在使用preg_replace('#\s+#', ' ', $content);
str_word_count
可能是合适的,但您可能需要指定计为单词的其他字符,或者在使用UTF-8字符时函数报告错误的值。
str_word_count($str, 1, characters_that_are_not_considered_word_boundaries);
示例强>:
print_r(str_word_count('holóeóó what',1));
返回
Array ( [0] => hol [1] => e [2] => what )
答案 2 :(得分:1)
经常使用的分隔符是正斜杠(/),哈希符号(#)和 波浪(〜)。以下是有效分隔的所有示例 图案。
$the_string = preg_replace('#\s+#', ' ', $content);
它将用单个空格替换多个空格(\s
)