#php
#php
Вопрос:
В настоящее время я пытаюсь это:
$sql_words = array("select","update","set", "from", "where", "and", "order by","insert into","delete");
echo str_replace($sql_words,
array("<span style='color:red'>SELECT</span>","<span style='color:red'>UPDATE</span>",
"<span style='color:green'>SET</span>", "<span style='color:green'>FROM</span>",
"<span style='color:blue'>WHERE</span>","<span style='color:green'>AND</span>",
"<span style='color:yellow'>ORDER BY</span>",
"<span style='color:green'>INSERT INTO</span>",
"<span style='color:green'>DELETE</span>"),
$variable
);
Я хочу, чтобы это было немного короче, и я бы хотел, чтобы цвет был переменной.
Например: в python есть понимание списка, где я бы сделал что-то вроде этого:
$newsql_words = ["<span style='color:#' randomcolor '>' $nice_sql_word '</span>' for $nice_sql_word in $sql_words]
Есть идеи, как это сделать на php?
Комментарии:
1. Вы сравниваете две разные операции. Операция PHP выполняет замену существующей строки. Ваш код на Python просто генерирует список новых строк, используя форматирование строк и понимание списка — не заменяя существующие строки.
Ответ №1:
Я думаю, было бы неплохо удалить весь повторяющийся html-код и использовать его только тогда, когда вы собираетесь его распечатать. итак
foreach($sql_words as $word) {
printf("<span style='color:%s'>%s</span>", $colors[array_rand($colors), strtoupper($word)]);
}
где $sql_words
ваши слова и $colors
это массив со всеми цветами, которые вы хотите рандомизировать.
Это самая простая вещь, которую я могу придумать, не зная применения этого. Надеюсь, это поможет.
Комментарии:
1. только одна мысль:
printf('<span style="color etc">'
(с перевернутыми кавычками)
Ответ №2:
Насколько я понимаю, вы просто хотите добавить случайный цвет к каждому слову? Это сделало бы работу и также преобразовало бы их все в верхний регистр:
$sql_words = array("select","update","set", "from", "where", "and", "order by","insert into","delete");
$colors = array('red','green','blue','yellow');
$color_max = count($colors) - 1;
$new_sql_words = array();
foreach($sql_words as $sql_word) {
$new_sql_words[] = "<span style='color:".$colors[rand(0,$color_max)]."'>".strtoupper($sql_word)."</span>";
}
Как отмечает AJ в комментариях, вы вообще не должны выполнять str_replace
.
Ответ №3:
Если вы ищете способ генерировать случайный цвет, вот хорошая ссылка:
http://www.talkincode.com/generate-a-random-colour-with-php-170.html
$colour = rand(0,10000000);
$colour = dechex($colour);
Лично я бы сгенерировал отдельное случайное значение на интервале [0,255] для каждого цветового компонента RGB, чтобы гарантировать, что у меня есть допустимое значение цвета, например:
$colorR = dechex(rand(0,255));
$colorG = dechex(rand(0,255));
$colorB = dechex(rand(0,255));
// Normalize the string lengths to 2
$colorR = (strlen($colorR) == 2) ? $colorR : "0" . $colorR;
$colorG = (strlen($colorG) == 2) ? $colorG : "0" . $colorG;
$colorB = (strlen($colorB) == 2) ? $colorB : "0" . $colorB;
$color = $colorR . $colorG . $colorB;