나는 이것이 매우 적은 포럼에서 이전에 물어 왔다는 것을 알고 있지만, 제안 된 해결책은 나를 신뢰할 만하지 않았다. 들어mirc 제어 코드, PHP를 통해
:
내가 일주일 동안이 작업 또는 지금보다, 나는이 작업을 어제 오전 3시까지 '까지 있었다 ... 그러나 나는 탈선 한, 내가 손에 문제에 도착하자 인식하지 못하는 mirc는 문자 색, 밑줄, 무게 및 이탤릭체를 제어하기 위해 ASCII 코드를 사용합니다. 색상의 ASCII 코드는 3, 굵게 2, 밑줄 1F, 기울임 꼴 1D 및 반전 (검정색 바탕에 흰색 텍스트)입니다.
이 데이터가 들어올 형태의 예로서 (문자가 인쇄되지 않으므로 정규 표현식에서) :
\x034this text is red\x033this text is green\x03 \x02bold text\x02
\x034,3this text is red with a green background\x03
등 - 기타.
다음은 내가 직접 사용하려고 수정 한 두 기능이지만 신뢰할 수없는 결과를 반환했습니다. 그 코드에 들어가기 전에, '신뢰할 수 없다'라는 것을 구체적으로 표현하기 위해, 때때로 코드가 해석 될 것이고, 다른 때에도 여전히 텍스트에 제어 코드가 남아있을 것이고, 나는 그 이유를 알 수 없습니다. 어쨌든;
$logln = preg_replace_callback("/(\x03)(\d\d?,\d\d?|\d\d?)(\s?.*?)(?(?=\x03)|$)/","color_rep",$logln);
출처 : : 코드가 호출이 관련된 경우
function mirc2html($x) {
$c = array("FFF","000","00007F","009000","FF0000","7F0000","9F009F","FF7F00","FFFF00","00F800","00908F","00FFFF","0000FF","FF00FF","7F7F7F","CFD0CF");
$x = preg_replace("/\x02(.*?)((?=\x02)\x02|$)/", "<b>$1</b>", $x);
$x = preg_replace("/\x1F(.*?)((?=\x1F)\x1F|$)/", "<u>$1</u>", $x);
$x = preg_replace("/\x1D(.*?)((?=\x1D)\x1D|$)/", "<i>$1</i>", $x);
$x = preg_replace("/\x03(\d\d?),(\d\d?)(.*?)(?(?=\x03)|$)/e", "'</span><span style=\"color: #'.\$c[$1].'; background-color: #'.\$c[$2].';\">$3</span>'", $x);
$x = preg_replace("/\x03(\d\d?)(.*?)(?(?=\x03)|$)/e", "'</span><span style=\"color: #'.\$c[$1].';\">$2</span>'", $x);
//$x = preg_replace("/(\x0F|\x03)(.*?)/", "<span style=\"color: #000; background-color: #FFF;\">$2</span>", $x);
//$x = preg_replace("/\x16(.*?)/", "<span style=\"color: #FFF; background-color: #000;\">$1</span>", $x);
//$x = preg_replace("/\<\/span\>/","",$x,1);
//$x = preg_replace("/(\<\/span\>){2}/","</span>",$x);
return $x;
}
function color_rep($matches) {
$matches[2] = ltrim($matches[2], "0");
$bindings = array(0=>'white',1=>'black',2=>'blue',3=>'green',4=>'red',5=>'brown',6=>'purple',7=>'orange',8=>'yellow',9=>'lightgreen',10=>'#00908F',
11=>'lightblue',12=>'blue',13=>'pink',14=>'grey',15=>'lightgrey');
$preg = preg_match_all('/(\d\d?),(\d\d?)/',$matches[2], $col_arr);
//print_r($col_arr);
$fg = isset($bindings[$matches[2]]) ? $bindings[$matches[2]] : 'transparent';
if ($preg == 1) {
$fg = $bindings[$col_arr[1][0]];
$bg = $bindings[$col_arr[2][0]];
}
else {
$bg = 'transparent';
}
return '<span style="color: '.$fg.'; background: '.$bg.';">'.$matches[3].'</span>';
}
그리고,
First을, 나는 물론했습니다
Second
또한 수행 방법을보고 시도 다양한 php/ajax 기반의 irc 클라이언트에 의해, 거기에 어떤 성공도 없었습니다. 이 mirc 측을 수행하는 것에 관해서는 필자도 거기를 보았습니다. 결과가 PHP보다 안정적이지만 서버에 전송 된 데이터는 소켓이 업로드시 시간 초과되는 지점까지 기하 급수적으로 증가하므로, 실행 가능한 옵션.
언제나 그렇듯이이 문제에 도움을 주시면 감사하겠습니다.
글쎄, 나는 마침내 정말로 뭔가 콘크리트가 나타납니다 벗어났다. 불행히도 나를 위해 2:40에 곧있을 것이지만, 이것에 대해 다시 한번 감사드립니다. 나는 내일이 일을해야 할 것이다. 그러나 다시 도움을 주셔서 감사합니다. – Daedalus