Почему этот счетчик всегда возвращает 1? - PullRequest
3 голосов
/ 23 января 2012

У меня есть следующая функция для подсчета количества символов в теге. Выход всегда равен 1, даже если я точно знаю, что это больше, чем одна цифра. Что я делаю не так?

$www = $_POST['url'];
$url = file_get_contents($www);

[еще немного кода]

function countTitle() {
global $url;
$search = "/\<title\>(.*)\<\/title\>/";

preg_match($search, $url, $result);

$title = $result[1]; // to string
$counttitle = count($title);
echo $counttitle;   
}

Я знаю, что регулярное выражение работает, потому что я использую следующую функцию для вывода тега заголовка:

function getTitle() {
global $url;
$search = "/\<title\>(.*)\<\/title\>/";

preg_match($search, $url, $result);

$title = $result[1]; // to string
echo $title;
}

Ответы [ 4 ]

10 голосов
/ 23 января 2012

Используйте strlen( $str ) для подсчета букв:

$myStr = 'Hello world';
echo strlen($myStr); // outputs 11

Strlen означает Str ing Len gth.

2 голосов
/ 23 января 2012

Вы, вероятно, хотите использовать strlen() вместо count().Я думаю, что count() сначала приводит к массиву, а затем подсчитывает количество элементов в этом массиве, которое в данном случае равно 1.

http://php.net/manual/en/function.strlen.php

http://php.net/manual/en/function.count.php

1 голос
/ 23 января 2012

И если вы используете кодировку utf-8 (не латинские символы), mb_strlen () будет более точным.

1 голос
/ 23 января 2012

Я думаю, вам нужна функция strlen(), а не count().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...