2017-02-15 2 views
0

Я пытаюсь подсчитать текст внутри тега заголовка. Но, похоже, это не работает. Я пробовал подсчет(), STRLEN() и т.д. Например:PHP Count символов внутри тега заголовка

<title>Count me!</title> 

Когда я использую StrLen() я получаю эту ошибку:

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

Когда я использую счетчик у просто получить 2. Я думаю, он считает теги заголовка внутри моего файла.

Контроллер:

$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); 
} 

Вы должны перебрать теги заголовков ... Это не означает, что у вас есть несколько тегов. Дом просто вернуть объект, который нужно получить доступ к , а затем вы получите длину заголовка

+0

Ты мужчина! Он работает, но единственная проблема заключается в том, что он выводит это: «69 12». 69 правильно, но я не хочу выводить 12. Как мне это сделать? Я также прочитаю документацию еще раз. – itvba

+0

показать скриншоты .. я не думаю, что он должен так возвращаться –

+0

Это была проблема с веб-сайтом, который я пробовал. Я пробовал другие сайты и работал отлично! Спасибо, мой добрый сэр! – itvba

0

Согласно documentation, DOMDocument::getElementsByTagName возвращает DOMNodeList объект, а не строка.

Необходимо перебрать элементы в списке с помощью цикла 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, он даст вам набор тегов li внутри этой ul.

Вы могли бы попробовать это;

<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>

Примечание: Элементы в возвращаемых коллекциях сортируются, как они появляются в исходном коде.

Смежные вопросы