preg_replace的简单模式的含义(#\ s +#)?

时间:2012-07-17 11:24:47

标签: php

很抱歉这是一个非常基本的问题,但根本没有简单的方法可以在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会更好吗?

3 个答案:

答案 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)

#delimiter

  

经常使用的分隔符是正斜杠(/),哈希符号(#)和   波浪(〜)。以下是有效分隔的所有示例   图案。

$the_string = preg_replace('#\s+#', ' ', $content);

它将用单个空格替换多个空格(\s