|
|
|
| Еще раз здрасти.
Игорь Вячеславович в Вашей книге ("Головоломки для хакера - 2") нашел интересный скрипт
<?php
$text = "ПРОГРАММИРОВАНИЕ - это ИСКУССТВО. ".
"Ему и ЖИЗНЬ посвятить не жалко.";
$text = preg_replace_callback(
"|[А-Я]{2,}|",
"replace_text",
$text);
echo $text;
function replace_text($matches)
{
return substr($matches[0],0,1).strtolower(substr($matches[0],1));
}
?>
|
Хочу прикрутить его к файлу форума util.post (чтобы в названиях тем "$theme" и в сообщениях тем "$postbody" порядок был) а как сделать не пойму.
Если не трудно подскажите пожалуйста. | |
|
|
|
|
|
|
|
для: Незнайка
(16.04.2008 в 18:00)
| | Ммм... а что вызывает затруднение? | |
|
|
|
|
|
|
|
для: cheops
(17.04.2008 в 13:51)
| | Пытался методом тыка, (Про программирование убрал, переменные назвал $theme и $postbody соответственно ) но Увы...
<?
// Обрабатываем теги ,, и
$theme = preg_replace_callback(
"|([a-zа-я\d!]{35,})|i",
"split_text",
$theme);
$theme = htmlspecialchars($theme);
$theme = preg_replace("#\[b\](.+)\[\/b\]#iU",'<b>\\1</b>',$theme);
$theme = preg_replace("#\[i\](.+)\[\/i\]#iU",'<i>\\1</i>',$theme);
$theme = str_replace("`","'",$theme);
// Здесь пытался вставить Ваш скрипт
return $theme;
?>
|
Потом здесь
<?
// Тэги
$postbody = preg_replace("#\[b\](.+)\[\/b\]#isU",'<b>\\1</b>',$postbody);
$postbody = preg_replace("#\[i\](.+)\[\/i\]#isU",'<i>\\1</i>',$postbody);
$postbody = preg_replace("#\[url\][\s]*((?=http:)[\S]*)[\s]*\[\/url\]#si",'<a href="\\1" target=_blank>\\1</a>',$postbody);
$postbody = preg_replace("#\[url\][\s]*((?=https:)[\S]*)[\s]*\[\/url\]#si",'<a href="\\1" target=_blank>\\1</a>',$postbody);
$postbody = preg_replace("#\[url\][\s]*((?=ftp:)[\S]*)[\s]*\[\/url\]#si",'<a href="\\1" target=_blank>\\1</a>',$postbody);
$postbody = preg_replace("#\[url[\s]*=[\s]*((?=http:)[\S]+)[\s]*\][\s]*([^\[]*)\[/url\]#isU",
'<a href="\\1" target=_blank>\\2</a>',
$postbody);
// Здесь пытался вставить Ваш скрипт
return $postbody;
?>
|
Ну вобщем где, как правильно вставить я не знаю | |
|
|
|
|
|
|
|
для: Незнайка
(17.04.2008 в 14:25)
| |
<?
$postbody = preg_replace("#\[b\](.+)\[\/b\]#isU",'<b>\\1</b>',$postbody);
$postbody = preg_replace("#\[i\](.+)\[\/i\]#isU",'<i>\\1</i>',$postbody);
$postbody = preg_replace("#\[url\][\s]*((?=http:)[\S]*)[\s]*\[\/url\]#si",'<a href="\\1" target=_blank>\\1</a>',$postbody);
$postbody = preg_replace("#\[url\][\s]*((?=https:)[\S]*)[\s]*\[\/url\]#si",'<a href="\\1" target=_blank>\\1</a>',$postbody);
$postbody = preg_replace("#\[url\][\s]*((?=ftp:)[\S]*)[\s]*\[\/url\]#si",'<a href="\\1" target=_blank>\\1</a>',$postbody);
$postbody = preg_replace("#\[url[\s]*=[\s]*((?=http:)[\S]+)[\s]*\][\s]*([^\[]*)\[/url\]#isU",
'<a href="\\1" target=_blank>\\2</a>',
$postbody);
$postbody = preg_replace_callback(
"|[А-Я]{2,}|",
"replace_text",
$postbody);
echo $postbody;
function replace_text($matches)
{
return substr($matches[0],0,1).strtolower(substr($matches[0],1));
}
|
| |
|
|
|
|
|
|
|
для: mihdan
(18.04.2008 в 15:51)
| | Нет, не "пашет"
Что-то другое по ходу.... | |
|
|
|
|
|
|
|
для: Незнайка
(18.04.2008 в 16:43)
| | Если на хостинге юзаете - возможно не установлена русская локаль
| |
|
|
|
|
|
|
|
для: mihdan
(19.04.2008 в 22:03)
| | Нет, не помогло.
Посмотрите у меня правильно записано?
setlocale(LC_ALL, '');
error_reporting(E_ALL & ~E_NOTICE);
|
Пишет ошибка в 107 строке.
Там у меня: $postbody);
Привожу часть кода с того момента где пытаемся добавить:
<?
$postbody = preg_replace_callback(
"|[А-Я]{2,}|",
"replace_text",
$postbody); ## Здесь показывает ошибка ##
echo $postbody;
function replace_text($matches)
{
return substr($matches[0],0,1).strtolower(substr($matches[0],1));
}
return $postbody; ## Здесь не может быть ошибки? (два раза подряд return) ##
}
function cpp_highlight($document)
{
// Преобразуем угловые скобки, для отображения HTML-тэгов
?>
|
| |
|
|
|
|
|
|
|
для: Незнайка
(20.04.2008 в 12:37)
| | >Посмотрите у меня правильно записано?
Неправильно) Напишите так:
setlocale(LC_ALL, '');
error_reporting(E_ALL);
|
>Пишет ошибка в 107 строке.
>Там у меня: $postbody);
Каков точный текст ошибки? | |
|
|
|
|
|
|
|
для: Киналь
(20.04.2008 в 13:17)
| | Спасибо, поправил
>> Каков точный текст ошибки?
Щас, гляну...
Во, как ругается:
Warning: preg_replace_callback() [function.preg-replace-callback]: Requires argument 2, 'replace_text', to be a valid callback in Z:\home\localhost\www\for\utils\utils.posts.php on line 107
ПРИВЕТ
Подскажите пожалуйста, кто знает где исправить
<?
// Тэги
## Для коррект. отображ. скрипта ## $postbody = preg_replace("#\[b\](.+)\[\/b\]#isU",'<b>\\1</b>',$postbody);
## $postbody = preg_replace("#\[i\](.+)\[\/i\]#isU",'<i>\\1</i>',$postbody);
##$postbody = preg_replace("#\[url\][\s]*((?=http:)[\S]*)[\s]*\[\/url\]#si",'<a href="\\1" target=_blank>\\1</a>',$postbody);
##$postbody = preg_replace("#\[url\][\s]*((?=https:)[\S]*)[\s]*\[\/url\]#si",'<a href="\\1" target=_blank>\\1</a>',$postbody);
##$postbody = preg_replace("#\[url\][\s]*((?=ftp:)[\S]*)[\s]*\[\/url\]#si",'<a href="\\1" target=_blank>\\1</a>',$postbody);
##$postbody = preg_replace("#\[url[\s]*=[\s]*((?=http:)[\S]+)[\s]*\][\s]*([^\[]*)\[/url\]#isU",
'<a href="\\1" target=_blank>\\2</a>',
$postbody);
$postbody = preg_replace_callback(
"|[А-Я]{2,}|",
"replace_text",
$postbody);
echo $postbody;
function replace_text($matches)
{
return substr($matches[0],0,1).strtolower(substr($matches[0],1));
}
return $postbody;
}
function cpp_highlight($document)
{
// Преобразуем угловые скобки, для отображения HTML-тэгов
?>
|
Все кина не будет, электрич. кончилось,
Комп щас зажмурится......... | |
|
|
|
|
|
|
|
для: Незнайка
(20.04.2008 в 13:48)
| | ? | |
|
|
|
|
|
|
|
для: Незнайка
(21.04.2008 в 19:38)
| | При таком коде такого быть не может. | |
|
|
|
|
|
|
|
для: Atheist
(21.04.2008 в 19:42)
| | >> При таком коде такого быть не может
А, что конкретно Вы имеете ввиду ?
Не комментарии случаем?
Или вообще неправильно записано? | |
|
|
|
|
|
|
|
для: Незнайка
(22.04.2008 в 17:43)
| | > А, что конкретно Вы имеете ввиду ?
Ну, во-первых, конечно, из-за переноса строки вот тут:
> '<a href="\\1" target=_blank>\\2</a>',
> $postbody);
код не будет выполняться, потому что это синтаксическая ошибка.
Во-вторых (это и основное, что мне не понравилось), у тебя определена callback-функция. Она имеет название "replace_text" и такой же аргумент передан preg_replace_callback. Кириллических букв вроде нет (по крайней мере везде одинаково написано), а выдается ошибка, характерная для случая, когда callback-функция не найдена. То, что она определяется в коде после preg_replace_callback значения не имеет.
P.S. Кстати, запись
> return $postbody;
вне тела функции означает, что код будет завершен в этом месте. Однако, код подпрограммы, в качестве которой может выступать код файла, который подключили с помощью require/include.
Например:
Файл include.php:
Файл main.php:
<?php
echo include('include.php'); // value
?>
|
| |
|
|
|
|
|
|
|
для: Atheist
(23.04.2008 в 00:10)
| | Интересно...
> '<a href="\\1" target=_blank>\\2</a>',
> $postbody);
|
>> код не будет выполняться, потому что это синтаксическая ошибка. Это работает. (Вообще то конечно интересно для чего Игорь Вячеславович переменную, не в первый раз на след. строчку переносит?)
Как только я пытаюсь вставить после этого то, что мне хотелось бы (Скрипт из книги вверху. Кстати рабочий, проверял)
Тут начинаются проблемы. Я точно не знаю что, куда нужно вставить (Может Подмогнёте? А то я чувствую, самостоятельно до пенсии не разберусь) | |
|
|
|
|
|
|
|
для: Незнайка
(23.04.2008 в 10:37)
| | Ну насчет комментариев: забей, это мог форум перенести на след. строку.
У тебя проблема в другом. Убери абсолютно все лишнее: оставь только preg_replace_callback и replace_text. И тогда посмотри. | |
|
|
|
|
|
|
|
для: Atheist
(23.04.2008 в 12:27)
| | >> Убери абсолютно все лишнее: оставь только preg_replace_callback и replace_text. И тогда посмотри.
Знать бы еще, что лишнее : )
Ладно. Щас что-то, где-то, поверну...
Так, что ли ?
<?
$postbody = preg_replace_callback(
"|[А-Я]{2,}|",
"replace_text",
$postbody);
echo $postbody;
function replace_text($matches)
?>
|
Или так ?
<?
$postbody = preg_replace_callback(
function replace_text($matches)
?>
|
А что же в нижний рег. будет переводить?
Ведь мы удалили:
<?
return substr($matches[0],0,1).strtolower(substr($matches[0],1));
?>
|
Или мы для эксперимента удаляем?
Ошибку ищем?
P.S. В оригинал. записана переменная со след. строчки и все работает. | |
|
|
|
|
|
|
|
для: Незнайка
(23.04.2008 в 13:11)
| | Ясное дело, что надо оставить функции, а не какую-то чушь.
<?php
$postbody = 'СТРОКА';
$postbody = preg_replace_callback('|[А-Я]{2,}|', 'replace_text', $postbody);
function replace_text($matches)
{
return substr($matches[0],0,1).strtolower(substr($matches[0],1));
}
echo $postbody;
?>
|
| |
|
|
|
|
|
|
|
для: Atheist
(23.04.2008 в 14:25)
| | Спасибо, попробую...
Попробовал
Скрипт Работает.
Хочу Вас спросить. Можно ли справиться со следующей проблемкой.
Вот например пишет посетитель вот так: ПрИвЕТ МиР! Желаю ВсЕм УСПехоВ и Т. п.
А нужно привести в порядок эти строки, вот так "Привет мир! Желаю всем успехов и т.п.
Это возможно?
P.S. Пока я писал модератор что-то удалил. Если сказали, что-то не хорошее в мой адрес придется повториться. Ожидаю | |
|
|
|
|
|
|
|
для: Незнайка
(23.04.2008 в 14:32)
| | Я ничего не говорил. По-моему, удалили твои пустые посты с точками. | |
|
|
|
|
|
|
|
для: Atheist
(23.04.2008 в 15:58)
| | >> Я ничего не говорил.
Это радует.
Ну а по вопросу выше, что Скажете. Есть решение? | |
|
|
|
|
|
|
|
для: Незнайка
(23.04.2008 в 17:17)
| | Решение, в принципе, есть, но я не буду его публиковать. | |
|
|
|
|
|
|
|
для: Atheist
(23.04.2008 в 17:22)
| | >> Решение, в принципе, есть, но я не буду его публиковать.
OK | |
|
|
|
|
|
|
|
для: Незнайка
(20.04.2008 в 13:48)
| |
<?
$postbody = preg_replace_callback(
"|[А-Я]{2,}|",
"replace_text",
$postbody);
echo $postbody;
function replace_text($matches)
{
return substr($matches[0],0,1).strtolower(substr($matches[0],1));
}
return $postbody; //конкретно эта часть мне непонятна что и куда пытаются вернуть?
}
?>
|
| |
|
|
|
|
|
|
|
для: ONYX
(23.04.2008 в 11:16)
| | >> return $postbody; //конкретно эта часть мне непонятна что и куда пытаются вернуть?
Мне тоже не понятно.
Удаляю эту строчку и пробую все равно не работает.
Я же писал: если бы я знал куда, что нужно пристроить...
А так...
Думаю, что ошибки есть и еще.
Скрипт целиком сюда загрузить не могу (utils.posts LiteForum) в этом скрипте идет обработка [code] и т.п. (не корректно отображается)
Если есть желание помочь можете сверху посмотреть прикрепленный файл. Возможно получится разобраться, как эту функцию внедрить. Буду очень признателен Всем, кто сможет помочь | |
|
|
| |
|
|
|
|
для: mihdan
(23.04.2008 в 13:21)
| | Вопрос снят, Тему можно закрыть | |
|
|
|
|