PHP


$moji = "とても大切なのが、<b>貴方を信じるという事</b>なのですね!";

の<b>~</b>で囲まれている文字数を取得する方法を教えてください。

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2015/08/04 22:01:06
  • 終了:2015/08/06 17:48:50

ベストアンサー

id:a-kuma3 No.2

a-kuma3回答回数4605ベストアンサー獲得回数19432015/08/05 11:10:16

ポイント60pt

こんな感じで。

<?php

$moji = "とても<B>大切</B>なのが、<b>貴方を信じるという事</b>なのですね!";

$n_match = preg_match_all("|<b>(.*?)</b>|i", $moji, $matches);

$sum = 0;
for ($i = 0 ; $i < $n_match ; ++$i) {
    $s = $matches[1][$i];
    $n = mb_strlen($s);
    echo $i . " : " . $s . " : " . $n . "\n";
    $sum += $n;
}

echo "TOTAL: " . $sum . "\n";

出力

0 : 大切 : 2
1 : 貴方を信じるという事 : 10
TOTAL: 12

タグの中身を拾ってるということで、

  • 大文字、小文字の区別をつけない
  • <b> が複数あっても大丈夫

ということを意識しました。

ideone.com で試したのがこちら。
http://ideone.com/9VLPVl

その他の回答(1件)

id:pogpi No.1

POGPI回答回数378ベストアンサー獲得回数502015/08/05 08:27:42

ポイント40pt

$hoge1 = split('<b>',$moji);
$hoge2 = split('</b>',$hoge1[1]);
$len = mb_strlen($hoge2[0]);
で、どうですか。

id:pogpi

「<」、「>」は半角で

2015/08/05 08:28:25
id:a-kuma3 No.2

a-kuma3回答回数4605ベストアンサー獲得回数19432015/08/05 11:10:16ここでベストアンサー

ポイント60pt

こんな感じで。

<?php

$moji = "とても<B>大切</B>なのが、<b>貴方を信じるという事</b>なのですね!";

$n_match = preg_match_all("|<b>(.*?)</b>|i", $moji, $matches);

$sum = 0;
for ($i = 0 ; $i < $n_match ; ++$i) {
    $s = $matches[1][$i];
    $n = mb_strlen($s);
    echo $i . " : " . $s . " : " . $n . "\n";
    $sum += $n;
}

echo "TOTAL: " . $sum . "\n";

出力

0 : 大切 : 2
1 : 貴方を信じるという事 : 10
TOTAL: 12

タグの中身を拾ってるということで、

  • 大文字、小文字の区別をつけない
  • <b> が複数あっても大丈夫

ということを意識しました。

ideone.com で試したのがこちら。
http://ideone.com/9VLPVl

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません