Я работаю над тем, чтобы получить некоторые тексты песен с использованием API и преобразовать текст песни в массив слов. Я получаю необычное поведение в функции preg_replace. Когда я выполнил некоторую отладку с помощью var_dump, я вижу, что var_dump возвращает значение 10 для строки «you», которая говорит мне, что может быть что-то не так. После этого preg_replace действует странно.Почему var_dump возвращает большее значение, чем длина строки?
Это мой код:
$source = get_chart_lyrics_data("madonna","frozen");
$pieces = explode("\n", $source);
$lyrics = array();
for($i=0;$i<count($pieces);$i++){
if($i>10){
$words = explode(" ",$pieces[$i]);
foreach($words as $_word){
if($_word=="")
continue;
var_dump($_word);
$word = strtolower($_word);
var_dump($word);
$word = trim($word);
var_dump($word);
$word = preg_replace("/[^A-Za-z ]/", '', $word);
var_dump($word);
$lyrics[$word]++;
}
}
}
Это первые 4 строки этот код возвращает:
string(10) “You”
string(10) “you”
string(10) “you”
string(8) “lyricyou”
Каким var_dump возвращается значение 10 для "вы"? И почему preg_replace действует так?
Спасибо.
Это, вероятно, проблема с кодировкой, 'var_dump' возвращает количество байтов, а не количество символов, вы можете показать исходную строку или лучше, откуда она взята. –
try 'echo htmlentities (htmlentities ($ word))', чтобы увидеть, есть ли какие-либо специальные символы или что-то –
«Вы» и «Вы» разные –