I am using a javascript code in my PHP API but when i am calling that API from android app or POSTMAN the JS doesn't get executed it just gets printed so is there any way to use it with PHP or can anyone convert my JS code to a PHP code that i can use in my API
here is the JS library -
var ntc = {
init: function() {
var color, rgb, hsl;
for(var i = 0; i < ntc.names.length; i )
{
color = "#" ntc.names[i][0];
rgb = ntc.rgb(color);
hsl = ntc.hsl(color);
ntc.names[i].push(rgb[0], rgb[1], rgb[2], hsl[0], hsl[1], hsl[2]);
}
},
name: function(color) {
color = color.toUpperCase();
if(color.length < 3 || color.length > 7)
return ["#000000", "Invalid Color: " color, false];
if(color.length % 3 == 0)
color = "#" color;
if(color.length == 4)
color = "#" color.substr(1, 1) color.substr(1, 1) color.substr(2, 1) color.substr(2, 1) color.substr(3, 1) color.substr(3, 1);
var rgb = ntc.rgb(color);
var r = rgb[0], g = rgb[1], b = rgb[2];
var hsl = ntc.hsl(color);
var h = hsl[0], s = hsl[1], l = hsl[2];
var ndf1 = 0; ndf2 = 0; ndf = 0;
var cl = -1, df = -1;
for(var i = 0; i < ntc.names.length; i )
{
if(color == "#" ntc.names[i][0])
return ["#" ntc.names[i][0], ntc.names[i][1], true];
ndf1 = Math.pow(r - ntc.names[i][2], 2) Math.pow(g - ntc.names[i][3], 2) Math.pow(b - ntc.names[i][4], 2);
ndf2 = Math.pow(h - ntc.names[i][5], 2) Math.pow(s - ntc.names[i][6], 2) Math.pow(l - ntc.names[i][7], 2);
ndf = ndf1 ndf2 * 2;
if(df < 0 || df > ndf)
{
df = ndf;
cl = i;
}
}
return (cl < 0 ? ["#000000", "Invalid Color: " color, false] : ["#" ntc.names[cl][0], ntc.names[cl][1], false]);
},
// adopted from: Farbtastic 1.2
// http://acko.net/dev/farbtastic
hsl: function (color) {
var rgb = [parseInt('0x' color.substring(1, 3)) / 255, parseInt('0x' color.substring(3, 5)) / 255, parseInt('0x' color.substring(5, 7)) / 255];
var min, max, delta, h, s, l;
var r = rgb[0], g = rgb[1], b = rgb[2];
min = Math.min(r, Math.min(g, b));
max = Math.max(r, Math.max(g, b));
delta = max - min;
l = (min max) / 2;
s = 0;
if(l > 0 && l < 1)
s = delta / (l < 0.5 ? (2 * l) : (2 - 2 * l));
h = 0;
if(delta > 0)
{
if (max == r && max != g) h = (g - b) / delta;
if (max == g && max != b) h = (2 (b - r) / delta);
if (max == b && max != r) h = (4 (r - g) / delta);
h /= 6;
}
return [parseInt(h * 255), parseInt(s * 255), parseInt(l * 255)];
},
// adopted from: Farbtastic 1.2
// http://acko.net/dev/farbtastic
rgb: function(color) {
return [parseInt('0x' color.substring(1, 3)), parseInt('0x' color.substring(3, 5)), parseInt('0x' color.substring(5, 7))];
},
names: [
["000000", "black"],
["070707", "black"],
["0F0F0F", "black"],
["121111", "black"],
["181414", "black"],
["100C0C", "black"],
["1B1A1A", "black"],
["0A0707", "black"],
["0B0101", "black"],
["0A0505", "black"],
["F0F8FF", "blue"],
["1C34DB", "blue"],
["32CD32", "green"],
["41DC2D", "green"],
["1CDC03", "green"],
["32CD32", "green"],
["FFFAF0", "white"],
["FFFFFF", "white"],
["F7F5F5", "white"],
["FCFCFC", "white"],
["FEF7F7", "white"],
["880808", "red"],
["AA4A44", "red"],
["800020", "red"],
["FF0000", "red"],
["CD5C5C", "red"],
["800000", "pink"],
["FC07EA", "pink"],
["F520E5", "pink"],
["BA08AD", "pink"],
["CB25BF", "pink"],
["F719E7", "pink"],
["663399", "purple"],
["AF00FC", "purple"],
["B825F9", "purple"],
["C13FFA", "purple"],
["A534D6", "purple"],
["A109E3", "purple"],
["D57EFB", "purple"],
["FFFFE0", "yellow"],
["F7E90B", "yellow"],
["F7EB29", "yellow"],
["E7DB1B", "yellow"],
["C5BB12", "yellow"]
]
}
ntc.init();
this library is used to get a closest hex color name for the hex color passed to it from the array in it.
this is how i am using it in my php file -
<!-- Include name that color library -->
<script type="text/javascript" src="color.js"></script>
<script type="text/javascript">
// 1. You need a hex code of the color
var ColorCode = "<?=$_REQUEST['hex_color']?>";
// 2. Rate the color using NTC
var ntcMatch = ntc.name(ColorCode);
// 3. Handle the result. The library returns an array with the identified color.
// 3.A RGB value of closest match e.g #01826B
console.log(ntcMatch[0]);
// Text string: Color name e.g "Deep Sea"
console.log(ntcMatch[1]);
document.write(ntcMatch[1]);
// True if exact color match, a Boolean
console.log(ntcMatch[2]);
</script>
the result i get when i call it from postman or android app -
the result i get in browser and i need in postman -
CodePudding user response:
You can try node js. Just install this on you back-end, then create some js script with file name like a color.js or something like that and call it from your php like this:
exec("node path/to/color.js $argsString", $output);
Would be helpful:
CodePudding user response:
The answer provided is misleading in the sense is doesn't provide an actual solution to the actual problem.
You could execute a small API to run this precise JS code on a NodeJS runtime, but what do you do with the already existing PHP code ?
OP : your JS code isn't really hard and you should be able to replicate it bits by bits in PHP, these boards are here to help people overcome problems but this is not one. Even if there might be solutions to run JS through PHP (which I doubt because just writing it give me shivers), it would really be easier to translate it into a proper PHP function.


