Броене на редове ?

dakata__92

Super Moderator
Как мога да сложа брояч на редовете като на снимката в кода който ще дам ? :)

Код:
$text = preg_replace("/\[code\](.*?)\[\/code\]/is",'<pre class="prettyprint">'.$text.'</pre>',$text);
Предполагам, че е нещо от сорта на
//Викане на функцията .
$text = preg_replace_callback("/\[code\](.*?)\[\/code\]/is","broiredove funkciq",$text);
:
Код:
function highlight_wt($go) 
{ 
echo '<table bgcolor="#fff"><tr><td width="15px">'; 
echo '<div class="php">', implode(range(1, count(file($go))), '<br />'), '</div>'; 
echo '</td><td>'; 
highlight_file($go); 
echo '</td></tr></table>'; 
} 

highlight_wt('test.php'); // Тук е пътят на файла от където се взима PHP кодът, който искате да покажете. 
?>

sf8a7ukcyssbi03cc.png
 
Пробвах да подам във функция ето това, но не брои :)

$broi = implode("<br />",range(1, count($text)));
 
Пробвах и ето така, но в <pre> таговете нямам <br /> :(
.implode(range(1,count(explode('<br />',$text))),'<br />').
 
Styl3rbg каза:
Погледни това : http://www.php.net/manual/en/function.highlight-string.php#70456
Гледах го, но не ми върши работа или поне аз не виждам приложение тук:
Код:
function br2nl($matches)
	{        
		$text = preg_replace("/\<br \/\>/","",$matches[1]); 
		return 'table><tr><td width="15px"><div class="count">'.implode(range(1,count(explode('',$matches[1]))),'<br />').'</div></td><td><pre class="prettyprint">'.$text.'</pre></td></tr></table>';
	}
	//Викане на функцията br2nl.
	$text = preg_replace_callback("/\[code\](.*?)\[\/code\]/is","br2nl",$text);
 
Това пък за какъв дявол ти е ? Иначе след като премахнеш html-ските тагове за нов ред можеш да броиш новите редове ("\n" или "\r" при различните операционни системи.).Пробвай това което съм ти дал(copy-paste пъвро в един празен файл, а не да го вграждаш директно) виж дали те удолетворява и чак тогава питай ако има проблеми.


$text = "
Код:
ддададададсда, минаваме на нов ред<br />
дсададдсадас, минаваме на нов ред<br />
до тук имаме 2 нови реда
";
function br2nl($matches)
{
$text = preg_replace('/<br \/>/','',$matches[1]);
$count = 0;
if (preg_match_all('/[\n]/', $text, $match)) $count = count($match[0]);
return '<table><tr><td width="15px"><div class="count" style="color:red;">'.$count.'</div></td><td><pre class="prettyprint">'.$text.'</pre></td></tr></table>';
}
//Викане на функцията br2nl.
echo $text = preg_replace_callback('/\
Код:
(.*?)\[\/code]/is','br2nl',$text);
 
А как мога да разделя резултата ? Примерно да не е едно число 50, а да се брои от 1 до 50 и числата да илзилат едно под друго ($count <br />) :)
 
dakata__92 каза:
djman каза:
Що не ползваш <ol></ol> ?
И как ще стане ? Я дай пример <ol><li><pre>$text</pre></li></ol>
:?

$code = explode("\n", $code); // тук е целия код
echo '<ol>';
foreach($code as $row) {
echo '<li>' . $row . '</li>';
}
echo '</ol>';

Само оцветяването не знам как ще стане.
 
Примера е доста добър но наистина няма как да го обединя по този начин с кода по-горе. Проблема идва от това, че връщам стойност return, а не извеждам директно :)
 
Направих го така, но не брои точно :shock:
PHP:
$code = explode("\r", $text);

	return '<table><tr><td width="15px"><div class="count">'.implode(range(1,count($code)),'<br />').'</div></td><td><pre class="prettyprint">'.$text.'</pre></td></tr></table>';
 
$text = "
Код:
sdsadsadsa<br />
asdads<br />
dsaasd
";
function br2nl($matches)
{
$text = preg_replace('/<br \/>/','',$matches[1]);
preg_match_all('/.+[\r\n]?/', $text, $match);
$text = '<ol>';
foreach($match[0] as $value) {
$text.='<li>'.$value.'</li>';
}
$text.='</ol>';
return '<table><tr><td width="15px"></td><td><pre class="prettyprint">'.$text.'</pre></td></tr></table>';
}
//Викане на функцията br2nl.
echo $text = preg_replace_callback('/\
Код:
(.*?)\[\/code]/is','br2nl',$text);
 
Получава се, но ми се иска да разделя текста от цифрите с таблица ! Ползвам и селектор на текста и се мешат нещата :(
 

Back
Горе