2011-05-06 6 views
0

현재 저는 이것을 시도하고 있습니다 :이 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 
     ); 

좀 더 짧아지기를 원하며 색깔을 변수로하고 싶습니다.

예를 들면 : 파이썬에서는 다음과 같이 할 것입니다.

$newsql_words = ["<span style='color:#'+randomcolor+'>'+$nice_sql_word+'</span>' for $nice_sql_word in $sql_words] 

PHP로 이것을 어떻게 할 것입니까?

+0

두 가지 다른 작업을 비교하고 있습니다. PHP 작업은 기존 문자열을 대체합니다. 파이썬 코드는 단순히 기존 문자열을 대체하지 않고 문자열 형식화 및 목록 이해를 사용하여 새로운 문자열 목록을 생성하는 것입니다. –

답변

2

: 각 RGB 색상 구성 요소가 보장하는 나는 유효한 색상 값, 예를 당신이 그것을 인쇄하려고 할 때. 그래서

foreach($sql_words as $word) { 
    printf("<span style='color:%s'>%s</span>", $colors[array_rand($colors), strtoupper($word)]); 
} 

$sql_words은 단어와 $colors는 무작위하려는 모든 색상 배열입니다.

이 응용 프로그램을 몰라도 나올 수있는 가장 간단한 것입니다. 희망이 도움이됩니다.

+1

'printf (' ''(거꾸로 인용 부호로 묶음) – dynamic

1

내가 아는 바로는 각 단어에 임의의 색상을 추가하고 싶습니까? 이 일을하고 모든뿐만 아니라 대문자로 변환합니다 :

$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을 수행 할 수 없습니다.

0

당신이 임의의 색상을 생성 할 수있는 방법을 찾고 있다면, 여기에 좋은 링크입니다 : 내가 구간에 별도의 임의의 값을 생성하는 것, 개인적으로

http://www.talkincode.com/generate-a-random-colour-with-php-170.html

$colour = rand(0,10000000); 
$colour = dechex($colour); 

[0255] 나는 모든 반복되는 HTML 코드를 제거하고 그냥 사용하는 것이 좋은 생각

$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; 
관련 문제