[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Разукрашка кода
nugle
Пробую разукрасить код!
Засунул функции php в файл и от туда вытаскиваю и пытаюсь поменять цвет

function valid($text)
{
if(is_file('functionPHP.txt') == true)
{
$file_array = file('functionPHP.txt');
}
foreach($file_array as $key=>$val)
{

$pattern = '/'.$val.'/';
$replace = '<span class="replaceFunc">'.$pattern.'</span>';
return preg_replace($pattern, $replace, $text);
}

}

if(isset($sub) && !empty($text))
echo valid($text);

Но почему то ничего не происходит, почему?



Спустя 1 час, 31 минута, 20 секунд (20.04.2011 - 11:37) Ulan написал(а):
а почему вы ищете функции обрамленные слешем?

$pattern = '/'.$val.'/';


упс не досмотрел, что это оказывается регулярка.

Спустя 11 минут, 28 секунд (20.04.2011 - 11:48) Trianon написал(а):
nugle
file() (в Вашем случае как минимум) возвращает строки, завершенные "\r\n"
В расцвечиваемом тексте после имени функции врядли идет перевод строки.
Поэтому preg_match ничего не находит.

Исправить ситуацию можно так:
$pattern = '/'.$val.'/x';

Либо можно указать соответствующий флаг в параметрах функции file()

Спустя 5 минут, 57 секунд (20.04.2011 - 11:54) nugle написал(а):
Trianon
вставил x
теперь ввжу к примеру abs(), а мне выводит /abs() /x()

Спустя 5 минут, 24 секунды (20.04.2011 - 12:00) Trianon написал(а):
исправляйте строку $replace = ...

Спустя 22 минуты, 3 секунды (20.04.2011 - 12:22) Ulan написал(а):
я бы использовал str_replace в данном случае.
и переводы строк можно обрезать trim

Спустя 2 часа, 39 минут, 37 секунд (20.04.2011 - 15:02) alex12060 написал(а):
можно тупо подсветить стандартными функциями пхп. Точнее, одной.
mixed highlight_string (string str [, bool return])

Спустя 2 часа, 11 минут, 12 секунд (20.04.2011 - 17:13) nugle написал(а):
я скинул все функции php(не конечно не знаю), мне выдаёт такую ошибку

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 5248796 bytes) in C:\WebServers\home\coloring.rui\www\index.php on line 37

Спустя 12 минут, 41 секунда (20.04.2011 - 17:25) Ulan написал(а):
return в цикле, может из-за этого?

Спустя 4 минуты, 7 секунд (20.04.2011 - 17:30) nugle написал(а):
не, не из-за этого, я уже давно его вытащил оттуда, просто гдето нужно увеличить разрешаемость, но это однозначно к твину, его ж сервак!

Спустя 5 минут, 14 секунд (20.04.2011 - 17:35) Ulan написал(а):
видимо памяти не хватает, в php.ini прописывается размер памяти доступный скрипту, memory_limit, можно посмотреть в phpifo()

Спустя 4 минуты (20.04.2011 - 17:39) nugle написал(а):
поставил memory_limit = 200000000M всё тоже самое

Спустя 1 час, 18 минут, 32 секунды (20.04.2011 - 18:57) nugle написал(а):
<?php

require './class/db.php';
require './class/coloring.php';

ini_set("memory_limit", "128M");

$text = !empty($_POST['text']) ? $_POST['text'] : null;
$sub = isset($_POST['sub']) ? $_POST['sub'] : null;

$functPHP = 'functionPHP.txt';




?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Untitled Document</title>
<
link href="css/class.css" rel="stylesheet" type="text/css" />
</
head>

<
body>
<
div>
<?php
function
valid($text)
{
if(is_file('functionPHP.txt') == true)
{
$file_array = file('functionPHP.txt');
}

foreach($file_array as $key=>$val)
{
$pattern = '/'.$val.'/x';
$replace = '<span class="replaceFunc">'.$val.'</span>';
$text = preg_replace($pattern, $replace, $text);
}

return $text;

}
if(isset($sub) && !empty($text))
echo valid($text);
?>
<form action="" method="post">
<
textarea name="text" id="text"></textarea><br />
<
input name="sub" id="sub" type="submit" />
</
form>
</
div>
</
body>
</
html>


файл весит 73килобайта

Спустя 8 минут, 43 секунды (20.04.2011 - 19:06) Trianon написал(а):
что в этом файле?

Спустя 3 минуты, 57 секунд (20.04.2011 - 19:10) nugle написал(а):
функции php
abs
acos
acosh
addcslashes
addslashes
aggregate
aggregate_info

и т.д.

Спустя 8 минут, 32 секунды (20.04.2011 - 19:18) Trianon написал(а):
вот это
Цитата
foreach($file_array as $key=>$val)
  {
  $pattern = '/'.$val.'/x';
  $replace = '<span class="replaceFunc">'.$val.'</span>';
  $text = preg_replace($pattern, $replace, $text);
  }

я бы попробовал заменить на

$pattern = '/('.implode('|', $file_array).')/x';
$replace = '<span class="replaceFunc">\\1</span>';
$text = preg_replace($pattern, $replace, $text);

Спустя 2 минуты, 16 секунд (20.04.2011 - 19:21) Invis1ble написал(а):
а зачем там вобще модификатор x стоит? вроде-бы он там не к месту... А в файле точно ничего, кроме названий функций нет?
Кстати, через ini_set лимит памяти не установишь, только напрямую, насколько я помню

Спустя 8 минут, 57 секунд (20.04.2011 - 19:30) Trianon написал(а):
Invis1ble
в файле есть переводы строк.
Модификатор x подавляет восприятие пробелов, как значащих символов.

Спустя 1 минута, 52 секунды (20.04.2011 - 19:32) nugle написал(а):
так тоже не получается
function valid($text)
{
if(is_file('functionPHP.txt') == true)
{
$file_array = file('functionPHP.txt');
}

$pattern = '/('.implode('|', $file_array).')/x';
$replace = '<span class="replaceFunc">\\1</span>';
$text = preg_replace($pattern, $replace, $text);

return $text;

}
if(isset($sub) && !empty($text))
echo valid($text);

Спустя 3 минуты, 52 секунды (20.04.2011 - 19:35) Invis1ble написал(а):
Trianon
А, ну да.... Он же файл читает без флага...

nugle
В файле точно только названия фунций? Просто мало ли, вдруг там спецсимволы есть..

Спустя 44 минуты, 48 секунд (20.04.2011 - 20:20) nugle написал(а):
какие спецсимволы?можешь их написать?

Спустя 3 минуты, 11 секунд (20.04.2011 - 20:23) Invis1ble написал(а):
те, которые интерпретируются как специальные, в контексте регулярного выражения формата PCRE :)
Их много, перечислять лень, почитай про регулярки и поймешь о чем я.
Если таковые имеются, то их нужно экранировать:
$pattern = '/' . preg_quote($val, '/') . '/x';

Спустя 33 минуты, 8 секунд (20.04.2011 - 20:57) nugle написал(а):
не выходит, таже ошибка

Спустя 3 минуты, 35 секунд (20.04.2011 - 21:00) sharki написал(а):
Я так и не понял, зачем тебе всё это?
Основная задача этого скрипта какая? В реальных проектах

Спустя 8 часов, 35 минут, 43 секунды (21.04.2011 - 05:36) nugle написал(а):
sharki
типо как тут код разукрашивать! там php js и т.д.

Спустя 11 минут, 45 секунд (21.04.2011 - 05:48) kirik написал(а):
Цитата (nugle @ 20.04.2011 - 22:36)
типо как тут код разукрашивать! там php js и т.д.

Не просто это smile.gif Говорю как некогда разработчик shphp (как раз который тут на форуме прикручен).

Спустя 16 минут, 49 секунд (21.04.2011 - 06:04) nugle написал(а):
не вообще пока это не нужно, просто хотелось попробывать сделать!

Спустя 13 минут, 12 секунд (21.04.2011 - 06:18) kirik написал(а):
Цитата (nugle @ 20.04.2011 - 23:04)
просто хотелось попробывать сделать!

Тремя регэкспами тут не обойтись. Тут нужно анализировать подсвечиваемый код.
К примеру: в этом посте ты хочешь написать функцию, которая будет подсвечивать стандартные php функции, так? Приведенный тобой код понятен, но что будет если нужно подсветить следующий код:
$var = 'функция addslashes() экранирует...бла бла';

ведь addslashes() здесь подсветится как функция, а нам нужно подсветить её как строку, верно? Скрипт "должен понимать" в каком контексте он сейчас работает.

Спустя 7 часов, 28 минут, 19 секунд (21.04.2011 - 13:46) nugle написал(а):
kirik
ну это будет дальше, сейчас этоже первый этап!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.