我知道 strlen 用于确定字符串长度 - 但是否可以搜索整个文本块并提取正好 8 个字符长的字符串?
问问题
92 次
3 回答
8
以下假设“字符串正好八个字符长”您的意思是“单词”,例如在文本中
$blockOfText = <<< TXT
codepad is an online compiler/interpreter, and a simple collaboration tool.
Paste your code below, and codepad will run it and give you a short URL you
can use to share it in chat or email.
TXT;
你只想找到“编译器”这个词。
非正则表达式解决方案(演示):
print_r(
array_filter(
str_word_count($blockOfText, 1),
function($word) { return strlen($word) === 8; }
)
);
参考:
正则表达式解决方案(演示):
preg_match_all(
'(
\b # match from a word boundary
\w{8} # followed by exactly 8 "word" characters
\b # followed by a word boundary
)x',
$blockOfText,
$matches
);
print_r($matches[0]);
“单词”字符是任何字母或数字或下划线字符,即任何可以成为 Perl “单词”一部分的字符。字母和数字的定义由 PCRE 的字符表控制,并且如果发生特定于语言环境的匹配,可能会有所不同。例如,在“fr”(法语)语言环境中,一些大于 128 的字符代码用于重音字母,这些字符由 \w 匹配。
参考:
于 2012-05-24T10:24:52.030 回答
1
使用explode()
或preg_split()
通过分隔符拆分字符串并遍历结果数组并使用strlen()
.
简单示例,查找长度为 2 的所有内容:
$string = "abcd ab abc abd ad";
$array = explode(' ', $string);
foreach ($array as $part) {
if (strlen($part) == 2) {
echo '"' . $part . '" has a length of 2<br />';
}
}
于 2012-05-24T10:24:28.490 回答
1
preg_match_all("/\b[a-zA-Z]{8}\b/", $sText, $aMatches);
$aWords = $aMatches[0];
另请参阅此示例。
于 2012-05-24T10:27:40.897 回答