2017-02-15 19 views
0

タイトルタグ内のテキストを数えようとしています。しかし、それは動作していないようです。私は、例えば、()などのstrlen()のカウントを試してみた:私はuはわずか2を取得し、カウントを使用する場合PHPタイトルタグ内の文字数をカウントする

strlen() expects parameter 1 to be string, object given 

:私はstrlenを使用する場合

<title>Count me!</title> 

は()私はこのエラーを取得します。私はそれが私のファイル内のタイトルタグを数えると思います。

コントローラー:

$title = $dom->getElementsByTagName('title'); 
$count = strlen($title); 

インデックス:

{{$count}} 
+0

'strlen()'はマルチバイトエンコーディングでは期待された結果を得ません。 –

答えて

0
$title_tag = $dom->getElementsByTagName('title'); 
foreach($tital_tag as $title){ 
$title_length = strlen($title->nodeValue); 
} 

あなたはそれはあなたが複数のタグを持っているという意味ではありません...タイトルタグをループする必要があります。ドムは単に にアクセスする必要のあるオブジェクトを返すと、あなたはDOMNodeListオブジェクトではなく、文字列を返すDOMDocument::getElementsByTagNamedocumentationによると、タイトル

+0

あなたは男です!それは動作しますが、唯一の問題はそれが "69 12"を出力することです。 69は正しいですが、私は12を出力したくありません。どうすればいいですか?私は再びドキュメントを読むでしょう。 – itvba

+0

ショースクリーンショット..私はそれがそのように返すべきだとは思わない。 –

+0

それは私が試したウェブサイトの問題だった。私は他のウェブサイトを試してみて、それは完璧に働いた!私の良い先生ありがとう! – itvba

0

の長さを取得します。

リスト内の要素を繰り返しループforeachで繰り返し、各ノードの値の長さを取得する必要があります。

0

次のように文字をカウントすることができますjqueryのを使用しただけで、代替:

<script type="text/javascript"> 
$(document).ready(function(){ 
    var title = $(document).prop('title').length; 
    console.log(title); 
}); 

</script> 
0

あなたはgetElementsByTagNameの()関数が何をするのではリターン「NodeListオブジェクト、表現であることだけやって結果を達成することはできません指定されたタグ名を持つ要素の集合です。 "

ie。 ulタグで呼び出すと、そのul内にliタグのコレクションが得られます。

これを試すこともできます。

<html> 
 
<head> 
 
\t <title>Heello</title> 
 
</head> 
 
<body> 
 
\t <script type="text/javascript"> 
 
\t \t var text = document.getElementsByTagName("title")[0].innerHTML.length;//get the length of the first title tag 
 
\t \t alert(text);//text no contains the length of characters within the title tag 
 
\t </script> 
 
</body> 
 
</html>

注:彼らはソースコードに表示されるとして返されたコレクション内の要素がソートされています。

関連する問題