powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) - Cannot redeclare url_replace()
15 сообщений из 15, страница 1 из 1
(PHP) - Cannot redeclare url_replace()
    #33248266
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая ситуёвина: Есть страничка, в неё инклюдится файл с функциями
заменяющий просто url на ссылку.
в эту же страничку инклудится файл в котором надо эти ссылки заменить.
выскакивает ошибка....
\примерно это так выглядит:
Код: plaintext
1.
2.
3.
4.
require_once("includes/bbcode_function.php");    \\ там эта самая функция на 
которую ругается
require_once("includes/user_comments.php");        \\ внутри этого файла она 
вызывается

сама функция выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
function make_clickable($text)
{

 $ret = ' ' . $text;

 // matches an "xxxx://yyyy" URL at the start of a line, or after a space.
 // xxxx can only be alpha characters.
 // yyyy is anything up to the first space, newline, comma, double quote or 
<
 $ret = preg_replace("#(^|[\n ])([\w]+?://[^ \"\n\r\t<]*)#is",
 "\\ 1 <a href=\"\\2\" target=\"_blank\" class=\"text_link\">\\ 2 </a>", $ret);

 // matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing
 // Must contain at least 2 dots. xxxx contains either alphanum, or "-"
 // zzzz is optional.. will contain everything up to the first space, 
newline,
 // comma, double quote or <.
 $ret = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#is",
"\\1<a href=\"http://\\ 2 \" target=\"_blank\" class=\"text_link\">\\2</a>", 
$ret);

 // matches an email@domain type address at the start of a line, or after a 
space.
 // Note: Only the followed chars are valid; alphanums, "-", "_" and or ".".
 $ret = 
preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i",
"\\1<a href=\"mailto:\\ 2 @\\ 3 \" class=\"text_link\">\\2@\\3</a>", $ret);

 // Remove our padding..
 $ret = substr($ret,  1 );

function url_replace($matches){
$part_of_url = substr("$matches[1]",  0 ,  6 );
//если URL начинается с http:// - то в новом окне открываем
if($part_of_url == 'http:/'){
$target = "target=\"_blank\"";
}
//если URL начинается с ftp:// - то в новом окне открываем
if($part_of_url == 'ftp://'){
$target = "target=\"_blank\"";
}
return "<a href=\"" . $matches[1] . "\"" . $target . "class=\"text_link\">" 
.. $matches[ 2 ] . "</a>";
}

$ret = preg_replace_callback(
              "#\(.*?)\](.*?)\[/url\]#",
              "url_replace",
              $ret);

 return($ret);

}
(почти целиком выдернуто из phpBB2)
Вот ошибка целиком:
Код: plaintext
1.
2.
Fatal error: Cannot redeclare url_replace() (previously declared
in 2005_09_02/includes/bbcode_function.php: 31 )
in 2005_09_02/includes/bbcode_function.php on line  31 
31 линия - это - function url_replace($matches){

Везде require_once стоит... Что можетбыть ему не так?


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
(PHP) - Cannot redeclare url_replace()
    #33248306
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
lissyaraВезде require_once стоит... Что может быть ему не так?Что ему не так - он уже сказал. Проверяйте, почему у вас файл 2005_09_02/includes/bbcode_function.php инклудится дважды. При чём доказать, что это именно так - не составляет особого труда - достаточно в начале файла 2005_09_02/includes/bbcode_function.php сделать какое-нибудь
Код: plaintext
echo 'Вот мы и приинклудили файлик '.__FILE__."<br>\n";
В общем, как всегда - PHP FAQ: Ничего не работает! Что делать??? в зубы и вперёд.
...
Рейтинг: 0 / 0
(PHP) - Cannot redeclare url_replace()
    #33248376
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как ни странно - инклудится он один раз. (проверено вышеописанным методом)
А вот
echo "проба";
поставленное перед url_replace - повторяется дважды, после чего вылетает. с
этой ошибкой
Что оно дважды повторяется - это нормально, там по массиву надо в цикле
пробежаться....
Если такое невозможно - вызвать второй раз функцию с вложенной функцией,
можно ли сделать что-то типа unset - как для переменной, но для моей
функции? (немного сумбурно, но надеюсь смысл понятен)


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
(PHP) - Cannot redeclare url_replace()
    #33248383
VERS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А случам includes/user_comments.php не пытается инклюдить bbcode_function.php еще раз?

-------------------------------
www.free-lancer.ru
...
Рейтинг: 0 / 0
(PHP) - Cannot redeclare url_replace()
    #33248392
VERS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lissyaraЕсли такое невозможно - вызвать второй раз функцию с вложенной функцией,
можно ли сделать что-то типа unset - как для переменной, но для моей
функции? (немного сумбурно, но надеюсь смысл понятен)


Posted via ActualForum NNTP Server 1.3

из мана: PHP does not support function overloading, nor is it possible to undefine or redefine previously-declared functions.
...
Рейтинг: 0 / 0
(PHP) - Cannot redeclare url_replace()
    #33248414
Фотография Duke1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
if (!function_exists('url_replace')) 
{
function url_replace(){
...
}
}    
}
...
Рейтинг: 0 / 0
(PHP) - Cannot redeclare url_replace()
    #33248440
VERS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
function a () {
 function b() {
  echo 'I am b<br>';
}
echo 'I am a<br>';
}

a();
b();
a();

Чтобы избежать это
if (!function_exists('b')) { ...

Все из мана )))
-------------------------------
www.free-lancer.ru
...
Рейтинг: 0 / 0
(PHP) - Cannot redeclare url_replace()
    #33248483
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Па-анятна....
Подобная идея и у меня мелькала но сформулировать никак не мог :(


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
(PHP) - Cannot redeclare url_replace()
    #33248689
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
lissyaraкак ни странно - инклудится он один раз. (проверено вышеописанным методом)
А вот
echo "проба";
поставленное перед url_replace - повторяется дважды, после чего вылетает.Этого не может быть, потому что этого не может быть. echo проба перед функцией и то, что написал я - это одно и то же. Если, конечно, вы не скрываете каких-то деталей.
И уж если влом искать, где именно происходит второй инклуд - то дабы не мудохаться с каждой функцией достаточно сделать ОДИН раз в начале файла 2005_09_02/includes/bbcode_function.php
Код: plaintext
if (function_exists('url_replace')) return;
не притрагиваясь при этом к остальному коду.
...
Рейтинг: 0 / 0
(PHP) - Cannot redeclare url_replace()
    #33248705
VERS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
* lissyaraкак ни странно - инклудится он один раз. (проверено вышеописанным методом)
А вот
echo "проба";
поставленное перед url_replace - повторяется дважды, после чего вылетает.Этого не может быть, потому что этого не может быть. echo проба перед функцией и то, что написал я - это одно и то же. Если, конечно, вы не скрываете каких-то деталей.
И уж если влом искать, где именно происходит второй инклуд - то дабы не мудохаться с каждой функцией достаточно сделать ОДИН раз в начале файла 2005_09_02/includes/bbcode_function.php
Код: plaintext
if (function_exists('url_replace')) return;
не притрагиваясь при этом к остальному коду.

А кто тебе сказал что файл инклудится два раза.
Просто, при каждом вызове функции make_clickable создается новая функция url_replace ...
...
Рейтинг: 0 / 0
(PHP) - Cannot redeclare url_replace()
    #33248719
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
VERSПросто, при каждом вызове функции make_clickable создается новая функция url_replace ...Да, просмотрел.
...
Рейтинг: 0 / 0
(PHP) - Cannot redeclare url_replace()
    #33248722
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Так выложить её ЗА ПРЕДЕЛЫ функции, как и полагается, и никаких гвоздей типа function_exists не понадобиться.
...
Рейтинг: 0 / 0
(PHP) - Cannot redeclare url_replace()
    #33248849
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это не ко мне - как полагается, а к написателям phpBB2 :)
Просто внутри одной функции сгруппировано по смыслу всё. так удобней.


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
(PHP) - Cannot redeclare url_replace()
    #33249315
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
lissyara
это не ко мне - как полагается, а к написателям phpBB2 :)
Просто внутри одной функции сгруппировано по смыслу всё. так удобней.Это не удобней. Это кривей. А то, что вы выбрали какую-то дерьмовую поделку - это исключительно ваши проблемы. Однако это не повод от отказа от нормальных решений.
...
Рейтинг: 0 / 0
(PHP) - Cannot redeclare url_replace()
    #33249448
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поделка, несмотря на Ваше к ней явное отвращение, написана лучше чем я смог бы. Потому у меня несколько иная точка зрения на ситацию.

Выложить - это хорошо, тока бы потом не потерялась. А то уползёт куда ньть в сторону, и потом совсем про..ётся :)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) - Cannot redeclare url_replace()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]