Цифры в конце вывода

Скрипт отправляет запрос через AJAXи записывает результат в буфер обмена.

JS:

<script type="text/javascript">

function setclipboard (id) {
    console.log(id);
    $.ajax({
        url: 'getfromdb.php',
        type: 'POST',
        data: {id: id}
    }).done(function(result){
        var newresult = result.replace(/rus/g, 'ru');
        navigator.clipboard.writeText(newresult);
    });
   }
</script>

PHP:

<?php
$id = $_POST['id'];
require_once 'database.php';
$send = mysqli_connect($host, $user, $password, $db_name) or die("Error! " . mysqli_error($send));
$getid = 'SELECT rus FROM db WHERE id = "'.$id.'"';
$res = mysqli_query($send, $getid) or die("Error! " . mysqli_error($send));
$vres = mysqli_fetch_assoc($res);
$name = $vres['rus'];
echo(printf("%s", $name));
?>

Всё работает нормально, но при копировании в буфер в конце строки появляется число с количеством символов.

Допустим, должно выводить : ru.ru.ru.123.321.ru.12.asd.qwe.qwe.ru., а выводит ru.ru.ru.123.321.ru.12.asd.qwe.qwe.ru.38 . В чем проблема? На каком этапе эти цифры появляются? Никак не могу от них избавиться.


Ответы (1 шт):

Автор решения: Егор Банин

Взгляните в документацию, что возвращает функция printf? :-) Она выводит отформатированную строку, и возвращает длину этой строки. Эту длину вы выводите с помощью echo. Уберите echo длины строки и число пропадёт. Или используйте функцию sprintf.

→ Ссылка