2015-11-02 1 views
1

Так что я сейчас работаю над фрагментом кода, который довольно глупо ошибочно.Невозможно преобразовать в int из строки в php

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

Это было на этом конкретном веб-сайте некоторое время (не написанное мной изначально), и меня попросили обновить его. Я задавался вопросом, не так ли. – ukitconsultant

+0

Думаю, он никогда не работал. Кто-то задумался о том, что это такое. –

ответ

0

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

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


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