文字列の長さを決定するために strlen が使用されることは知っていますが、テキストのブロック全体を検索して、正確に 8 文字の長さの文字列を引き出すことは可能ですか?
3 に答える
8
以下は、「正確に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;
「コンパイラ」という単語のみを検索します。
非正規表現ソリューション ( demo ):
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 に答える