Я бы посоветовал лучше 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>
Надеюсь, что помогает.
В PHP5 существует волшебная константа __FILE__
это содержит полный путь файла, в котором это появляется. Можно использовать его в сочетании с dirname для вычисления корня документа.
Можно поместить оператор как следующий в файле конфигурации
define ('DOCUMENT_ROOT', dirname(__FILE__));
это должно добиться цели
Нет никакой потребности изменить все сценарии.
Можно выполнить файл PHP, прежде чем любой скрипт будет запущен с помощью auto_prepend_file
.
$_SERVER
просто массив, можно изменить его и установить корректный $_SERVER['DOCUMENT_ROOT']
.
Это - одна причина, почему люди перекачивают все посредством начальной загрузки/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
это сделает то, что Вы хотите...
PHP должен устанавливать текущий каталог на тот, который сценарий находится в, поэтому, пока это не повредилось, необходимо смочь выяснить корневое использование документа $_SERVER['SCRIPT_FILENAME']
и getcwd()
. (Я не могу помнить весь $ _SERVER Вар первое, что пришло на ум, могло бы быть что-то в phpinfo (), это более полезно.)
Почему бы не потребовать, чтобы Ваш webhost настроил его серверы правильно?
подобные вещи имеют тенденцию задерживаться тихо в Вашем коде и никогда не удаляться (но все еще активный), пока кто-то наконец не чинит сервер. Thén все повредится снова.
Или, переместите свой материал в хост, который будет работать. Если это повреждается, кто знает то, что Вы найдете затем.