Как программно решить, что документ базируется в PHP?

Я бы посоветовал лучше RegExp: ^rgba\((\d*)\,\s?(\d*)\,\s?(\d*),\s?([01]?\.?\d*?)\)$

Мы знаем, что значение Alpha находится в диапазоне от 0 до 1, поэтому мы можем искать 0.00, .25, 1 или, возможно, 1.00. Рассмотрим следующее.

$(function() {
  function changeTextColor(obj) {
    var rgb = obj.css('background-color');
    var pattern;
    if (rgb.slice(0, 4) == "rgba") {
      pattern = /^rgba\((\d*)\,\s?(\d*)\,\s?(\d*),\s?([01]?\.?\d*?)\)$/;
    } else {
      pattern = /^rgb\((\d*)\,\s?(\d*)\,\s?(\d*)\)$/;
    }
    var matches = rgb.match(pattern);
    var red = parseInt(matches[1]);
    var green = parseInt(matches[2]);
    var blue = parseInt(matches[3]);
    var alpha = parseFloat(matches[4]) || -1;
    console.log(matches, red, green, blue, alpha);
    var colorValue = Math.round(((red * 299) + (green * 587) + (blue * 114)) / 1000);

    if (alpha >= 0) {
      if (alpha < 0.5) {
        console.log("RGBA", colorValue);
        obj.css('color', '#444444');
      }
    } else {
      if (colorValue > 125) {
        console.log("RGB 1", colorValue);
        obj.css('color', '#444444');
      } else {
        console.log("RGB 2", colorValue);
        obj.css('color', 'white');
      }
    }
  }

  $("button").click(function() {
    changeTextColor($("#box-1"));
    changeTextColor($("#box-2"));
  });
});
.color {
  width: 200px;
  height: 200px;
  background-color: rgb(20, 20, 20);
  float: left;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button style="display: block;">Go</button>
<div id="box-1" class="color">
  Text 1
</div>
<div id="box-2" class="color" style="background-color: rgba(50,100,200,.25);">
  Text 2
</div>

Надеюсь, что помогает.

6
задан Kim Sullivan 24 November 2012 в 10:44
поделиться

5 ответов

В PHP5 существует волшебная константа __FILE__ это содержит полный путь файла, в котором это появляется. Можно использовать его в сочетании с dirname для вычисления корня документа.

Можно поместить оператор как следующий в файле конфигурации

define ('DOCUMENT_ROOT', dirname(__FILE__));

это должно добиться цели

7
ответ дан 8 December 2019 в 17:28
поделиться

Нет никакой потребности изменить все сценарии.

Можно выполнить файл PHP, прежде чем любой скрипт будет запущен с помощью auto_prepend_file.

$_SERVER просто массив, можно изменить его и установить корректный $_SERVER['DOCUMENT_ROOT'].

3
ответ дан 8 December 2019 в 17:28
поделиться

Это - одна причина, почему люди перекачивают все посредством начальной загрузки/index.php использующий htaccess и/или строк запроса. Можно использовать dirname( __FILE__ ) прием, отмеченный выше и, получает общедоступную основу Вашего приложения тот путь.

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

function findAppBase( $dir ) {
    if( file_exists( "$dir/unique_file.txt" ) ) {
        return $dir;

    return findAppBase( dirname( $dir ) );
}

$base = findAppBase( dirname( __FILE__ ) );

Тот код не был протестирован, и мог бы быть способ дождевика использовать Вар в $_ENV или $_SERVER это сделает то, что Вы хотите...

2
ответ дан 8 December 2019 в 17:28
поделиться

PHP должен устанавливать текущий каталог на тот, который сценарий находится в, поэтому, пока это не повредилось, необходимо смочь выяснить корневое использование документа $_SERVER['SCRIPT_FILENAME'] и getcwd(). (Я не могу помнить весь $ _SERVER Вар первое, что пришло на ум, могло бы быть что-то в phpinfo (), это более полезно.)

0
ответ дан 8 December 2019 в 17:28
поделиться

Почему бы не потребовать, чтобы Ваш webhost настроил его серверы правильно?

подобные вещи имеют тенденцию задерживаться тихо в Вашем коде и никогда не удаляться (но все еще активный), пока кто-то наконец не чинит сервер. Thén все повредится снова.

Или, переместите свой материал в хост, который будет работать. Если это повреждается, кто знает то, что Вы найдете затем.

0
ответ дан 8 December 2019 в 17:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: