2017-12-14 19 views
0

は、文字列の例から、各ボックス内の各文字をカウント括弧内の各文字をカウントする方法

$str = 'man[big man]boy[big]guy[badforreal] and others'; 

期待される結果:

あなたは(男性)

のための6つの文字を持っています

あなたは(少年)の3文字を持っています

あなたは男)

これは本当にPHPで実現できますか?

+0

PHPで解決する必要はありますか? – SindreKjr

+1

あなたはいくつかのコードを書こうとしましたか? – RomanPerekhrest

+0

@Basillicum よろしくお願い致します。 – examma

答えて

0

you have 6 characters for (man) 
you have 3 characters for (boy) 
you have 10 characters for (guy) 
2

拡張preg_match_allソリューション:

$str = 'man[big man]boy[big]guy[badforreal] and others'; 
preg_match_all('/([^\s\[\]]+)\[([^\[\]]+)\]/', $str, $matches); 

if (isset($matches[1])) { 
    foreach ($matches[1] as $k => $m) { 
     printf("%s characters for (%s)\n", strlen(str_replace(" ", "", $matches[2][$k])), $m); 
    } 
} 

出力:あなたはこの

$array = explode("]", $str); 
foreach ($array as $string){ 
    if(strpos($string, '[') !== false){ 
     $strLabel = strstr($string, '[', true); 
     $newStr .= "you have " . strlen(str_replace(["["," "], "", strstr($string, '['))) ." characters for (" . $strLabel .")<br/>"; 
    } 
} 
echo $newStr; 

期待される出力を試すことができます

6 characters for (man) 
3 characters for (boy) 
10 characters for (guy) 
関連する問題