Перейти к контенту
  • 0

PHP код


Jax

Вопрос

Сколько я не мучался ставя различные хаки с IZE и сам пробовал писать, но всегда в ходе публикации кодов выявлялись различные баги. Может быть, у кого есть нормальный php тег для форума.

Спасибо.

 

Могу выложить тот варинат, который стоит у меня, вдруг кто-то захочет исправить в нем ошибки?

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0
Выкладывай посмотрим...
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ну, я выкладывал его где-то тут.

В общем вот:

post_parser.php

//---------------------------------
		// Do [CODE] tag
		//---------------------------------

		$txt = preg_replace( "#\[code\](.+?)\[/code\]#ies", "\$this->regex_code_tag('\\1')", $txt );

ниже:

//---------------------------------
		// Do [PHP] tag
		//---------------------------------

		$txt = preg_replace( "#\[php\](.+?)\[/php\]#ies", "\$this->regex_php_tag('\\1')", $txt );

//////////////////////////////
///////in the SAME file, FIND:
//////////////////////////////

		$txt = preg_replace( "#<!--c1-->(.+?)<!--ec1-->#", '[CODE]'   , $txt );
		$txt = preg_replace( "#<!--c2-->(.+?)<!--ec2-->#", '

' , $txt );[/code]

 

И НАВЕРНОЕ ЭТО:

 

$txt = preg_replace( "#<!--php1-->(.+?)<!--ephp1-->(.+?)<!--php2-->(.+?)<!--ephp2-->#e", "\$this->unconvert_php('\\2')", $txt );[/code]

под

// UNCONVERT FUNCTIONS

Это:

function unconvert_php($txt)
{
	$txt = str_replace("<br />", "\n", $txt);
	$txt = str_replace("<code>", "", $txt);
	$txt = str_replace("</code>", "", $txt);
	$txt = preg_replace("#\<font(.+?)>#", "", $txt);
	$txt = str_replace("</font>", "", $txt);

	return '[PHP]' . $txt . '[/PHP]';
}

далее впихиваем эту фун-ю:

function regex_php_tag($txt="") {
	global $ibforums;

	$default = "\[php\]$txt\[/php\]";

	if ($txt == "") return;

	// Too many embedded code/quote/html/sql tags can crash Opera and Moz

	if (preg_match( "/\[(quote|code|html|sql|php)\].+?\[(quote|code|html|sql|php)\].+?\[(quote|code|html|sql|php)\].+?\[(quote|code|html|sql|php)\].+?\[(quote|code|html|sql|php)\].+?\[(quote|code|html|sql|php)\].+?\[(quote|code|html|sql|php)\]/i", $txt) ) {
		return $default;
	}

	$txt = @html_entity_decode($txt, ENT_QUOTES);
	$txt = str_replace("$", "$", $txt);

	if(substr_count($txt, "?>") <= 0)
	{
		$txt = "<?php\n\n" . $txt . "\n\n?>";
	}

	$txt = highlight_string($txt, 1);

	$txt = str_replace("<code>", "", $txt);
	$txt = str_replace("</code>", "", $txt);

	while(preg_match("#\n$#", $txt))
	{
		$txt = preg_replace("#\n$#", "", $txt);
	}

	// Take a stab at removing most of the common
	// smilie characters.

	//$txt = str_replace( "&" , "&", $txt );
	$txt = preg_replace( "#<#"   , "<", $txt );
	$txt = preg_replace( "#>#"   , ">", $txt );
	$txt = preg_replace( "#"#" , """, $txt );
	$txt = preg_replace( "#:#"	  , ":", $txt );
	$txt = preg_replace( "#\[#"	 , "[", $txt );
	$txt = preg_replace( "#\]#"	 , "]", $txt );
	$txt = preg_replace( "#\)#"	 , ")", $txt );
	$txt = preg_replace( "#\(#"	 , "(", $txt );
	$txt = preg_replace( "#\r#"	 , "<br />", $txt );
	$txt = preg_replace( "#\n#"	 , "<br />", $txt );
	$txt = preg_replace( "#\s{1};#" , ";", $txt );

	// Ensure that spacing is preserved

	$txt = preg_replace( "#\s{2}#", "  ", $txt );

	//fix stupid line break bug;
	$txt = preg_replace("#^\<font color=\"\#000000\">\<br />#", "", $txt);
	$txt = preg_replace("#\<br />\</font>$#", "", $txt);

	$html = $this->wrap_style( array( 'STYLE' => 'PHP' ) );

	return "<!--php1-->{$html['START']}<!--ephp1-->$txt<!--php2-->{$html['END']}<!--ephp2-->";

}

 

Song, Help.

Изменено пользователем Jax
Ссылка на комментарий
Поделиться на других сайтах

  • 0

У меня совершенно другая система.

Начнём с того, что у меня noHTML, т.е. unconvert у меня вообще не зайдествована + все комментарии типа <-- c --> мне тоже не нужны.

Поэтому помочь могу только разве телепатически, но я так не умею :D

Ты бы лучше написал, что у тебя не работает в той модификации, что ты привёл выше?

 

Что касается подсветки на sysman, то там всё гораздо сложнее, она универсальна, подстраивается под любые языки и правила парсинга, т.е. я хочу сказать, что в ней нет почти ничего общего с тем кодом, что ты привёл. Опять же не могу тебе практически ничем помочь.

Грубо говоря, у меня в подсветке в коде жёстких регулярных выражений не описано.

Изменено пользователем Song
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Ты бы лучше написал, что у тебя не работает в той модификации, что ты привёл выше?

К примеру, вот нормальный код, который должен быть:

<?php
$file_names = array();
$file_count = "0";
$readdir = dir("."); // ваша директория
while ($files = $readdir->read()){
  if($files  != "." AND $files  != ".."){
	 $file_names[$file_count] = $files; $file_count++;}}
$readdir->close();
sort($file_names);
for($count = 0; $count < $file_count; $count++){
  $file_link = $file_names[$count];
?>
<html>
<head>
<title></title>
</head>
<body>
<table>
<tr>
<td bgcolor="#F2F2F2"><font face="Arial" style="font-size: 9px;"><? echo $count; ?></font></td>
<td bgcolor="#D9D9D9"><font face="Arial" style="font-size: 9px;"><? echo $file_link; ?></font></td>
</tr>
</table>
<? } ?>
</body>
</html>

 

а вот, что мне дает мой любимый пхп тег:

http://newage.gcnet.ru/uploads/img-1276-phptag.jpg

 

Обрати внимание на продолжение строки if($files...

 

Song, а как бы ты этот мод доделал бы?

Изменено пользователем Jax
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Вот.

phpcode.txt ( 4.18 килобайт ) Кол-во скачиваний: 0

я имел ввиду не текст мода, а кусок кода, который корёжится у тебя в картинке

а вот, что мне дает мой любимый пхп тег:
Ссылка на комментарий
Поделиться на других сайтах

  • 0

2 Jax

Кто мешает в функции regex_php_tag после:

$txt = str_replace("& #036;", "$", $txt);

добавить:

$txt = str_replace("& #033;", "!", $txt);

 

Мля... пробелы естественно между & и # убрать

Изменено пользователем urisoft
Ссылка на комментарий
Поделиться на других сайтах

  • 0

2 Jax

Кстати так наверное будет правильнее:

 

В функции regex_php_tag заменить:

 

$txt = str_replace("&#036;", "$", $txt);

 

на:

 

$txt = preg_replace("'(&amp;|&#038;|&#38;)'i","&",$txt);

$txt = preg_replace("'(&lt;|&#060;|&#60;)'i","<",$txt);

$txt = preg_replace("'(&gt;|&#062;|&#62;)'i",">",$txt);

$txt = preg_replace("'(&quot;|&#034;|&#34;)'i","\"",$txt);

$txt = preg_replace("'(&#039;|&#39;)'i","'",$txt);

$txt = preg_replace("'(&#033;|&#33;)'i","!",$txt);

$txt = preg_replace("'(&#124;)'i","|",$txt);

$txt = preg_replace("'(&#036;|&#36;)'i","$",$txt);

$txt = preg_replace("'(&#092;|&#92;)'i","\\",$txt);

 

заменить:

 

//$txt = str_replace( "&" , "&amp;", $txt );

$txt = preg_replace( "#&lt;#" , "&#60;", $txt );

$txt = preg_replace( "#&gt;#" , "&#62;", $txt );

$txt = preg_replace( "#&quot;#" , "&#34;", $txt );

$txt = preg_replace( "#:#" , "&#58;", $txt );

$txt = preg_replace( "#\[#" , "&#91;", $txt );

$txt = preg_replace( "#\]#" , "&#93;", $txt );

$txt = preg_replace( "#\)#" , "&#41;", $txt );

$txt = preg_replace( "#\(#" , "&#40;", $txt );

$txt = preg_replace( "#\r#" , "<br />", $txt );

$txt = preg_replace( "#\n#" , "<br />", $txt );

$txt = preg_replace( "#\s{1};#" , "&#59;", $txt );

 

на:

 

$txt = str_replace("&lt;","&#60;",$txt);

$txt = str_replace("&gt;","&#62;",$txt);

$txt = str_replace("&quot;","&#34;",$txt);

$txt = str_replace("!","&#33;",$txt);

$txt = str_replace("|","&#124;",$txt);

$txt = str_replace("$","&#36;",$txt);

$txt = str_replace("\\","&#92;",$txt);

$txt = str_replace(":","&#58;",$txt);

$txt = str_replace("[","&#91;",$txt);

$txt = str_replace("]","&#93;",$txt);

$txt = str_replace(")","&#41;",$txt);

$txt = str_replace("(","&#40;",$txt);

$txt = str_replace("\n","<br />",$txt);

$txt = str_replace("\r","<br />",$txt);

$txt = preg_replace( "#\s{1};#","&#59;",$txt);

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Jax, может выложишьв моды свой скрипт?
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Jax, может выложишьв моды свой скрипт?

Лень, он тут есть - качайте.

 

urisoft, Song: Еще вопрос есть, когда всталяешь просто любой текст в этот код, к примеру:

simple text

То он все равно впихивает <?php ?>

<?php
simple text
?>

Как это можно убрать?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

2 Jax

В regex_php_tag есть такие строки:

if(substr_count($txt, "?>") <= 0)

{

$txt = "<?php\n\n" . $txt . "\n\n?>";

}

 

Удали их.

Хотя вполне логично, что php код может быть вставлен без тэгов <?php ?> (скажем из середины кода) и он автоматом их добавит. Иначе подсветки не будет.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.