Засунул функции 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 ничего не находит.
Исправить ситуацию можно так:
Либо можно указать соответствующий флаг в параметрах функции file()
file() (в Вашем случае как минимум) возвращает строки, завершенные "\r\n"
В расцвечиваемом тексте после имени функции врядли идет перевод строки.
Поэтому preg_match ничего не находит.
Исправить ситуацию можно так:
$pattern = '/'.$val.'/x';
Либо можно указать соответствующий флаг в параметрах функции file()
Спустя 5 минут, 57 секунд (20.04.2011 - 11:54) nugle написал(а):
Trianon
вставил x
теперь ввжу к примеру abs(), а мне выводит /abs() /x()
вставил x
теперь ввжу к примеру abs(), а мне выводит /abs() /x()
Спустя 5 минут, 24 секунды (20.04.2011 - 12:00) Trianon написал(а):
исправляйте строку $replace = ...
Спустя 22 минуты, 3 секунды (20.04.2011 - 12:22) Ulan написал(а):
я бы использовал str_replace в данном случае.
и переводы строк можно обрезать trim
и переводы строк можно обрезать trim
Спустя 2 часа, 39 минут, 37 секунд (20.04.2011 - 15:02) alex12060 написал(а):
можно тупо подсветить стандартными функциями пхп. Точнее, одной.
mixed highlight_string (string str [, bool return])
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
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 лимит памяти не установишь, только напрямую, насколько я помню
Кстати, через ini_set лимит памяти не установишь, только напрямую, насколько я помню
Спустя 8 минут, 57 секунд (20.04.2011 - 19:30) Trianon написал(а):
Invis1ble
в файле есть переводы строк.
Модификатор x подавляет восприятие пробелов, как значащих символов.
в файле есть переводы строк.
Модификатор 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
В файле точно только названия фунций? Просто мало ли, вдруг там спецсимволы есть..
А, ну да.... Он же файл читает без флага...
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 и т.д.
типо как тут код разукрашивать! там php js и т.д.
Спустя 11 минут, 45 секунд (21.04.2011 - 05:48) kirik написал(а):
Цитата (nugle @ 20.04.2011 - 22:36) |
типо как тут код разукрашивать! там php js и т.д. |
Спустя 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
ну это будет дальше, сейчас этоже первый этап!
ну это будет дальше, сейчас этоже первый этап!