Невозможно преобразовать в int из строки в php

1

Поэтому я сейчас работаю над фрагментом кода, который довольно глупо ошибочно.

function screenWidth($buffer)
{
    global $widthTest;

    $widthTest = $buffer;

}

ob_start("screenWidth");

$screenWidth = '<script type="text/javascript">document.write(parseInt(document.documentElement.clientWidth));</script>';

echo $screenWidth;

$width = ob_get_contents();

ob_end_clean();

echo $width;
echo $widthTest;

Это приводит к строке, которая дает мне ширину экрана, без javascript, что прекрасно. Однако по какой-то причине я не могу заставить его преобразовать в целое число.

Я что-то упускаю? Я запустил это в виде обычного текста, и он определенно возвращает число, а не только javascript. Он хранится как строка, и если я попытаюсь преобразовать его с помощью intval или (int) $ width; то он возвращает 0 каждый раз.

Я знаю об ошибках в этом, но, к сожалению, это устаревший код, и это нужно делать по разным причинам.

У кого-нибудь есть идеи?

  • 1
    Я действительно не понимаю, как это может работать? Сначала выполняется PHP-код на сервере. Затем он отправляет результат в браузер пользователей, в котором выполняется javascript ... PHP не может получить никакого значения взамен этого javascript.
  • 0
    Это было на этом конкретном веб-сайте в течение некоторого времени (не написано мной изначально), и меня попросили обновить его. Я задавался вопросом, было ли это так.
Показать ещё 1 комментарий
Теги:
string
integer

1 ответ

0

Невозможно получить ширину экрана, как это делается в PHP, как также упоминается @MagnusEriksson, PHP запускается на сервере. В то время, когда ваш PHP-код оценивается, размер экрана неизвестен. javascript запускается на клиенте, где он может определять размер экрана, потому что экран является объектом клиента. PHP никогда не может знать размер экрана, потому что он запускается на сервере, а на сервере нет экрана (или, по крайней мере, не правильный).

Единственный способ сообщить PHP о размере экрана клиента, вычислив его с помощью javascript, а затем передать значение с помощью ajax или перенаправления с размером экрана в качестве параметров link.php?screensize=xxx


В вашем текущем коде вы уже разбираете переменную javascript в int. Это отлично подходит для переменной javascript (как можно увидеть здесь: http://jsfiddle.net/j47k01jt/).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню