Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск битых ссылок, в тексте 
:(
    Опции темы
feosr
Дата 12.6.2008, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 20.1.2007
Где: Минск

Репутация: нет
Всего: 2



Как бы задача в следующем:

из таблицы pfx_temp_pages выводится контент. Навигация по статьям проихходит по заголовку статьи (по принцыпу WIKI систем). Требуется проверка ссылок на странице. Например если ссылка ведет на статью которой нету, то к ссылке добавляется act=edit скажем. Вопрос, как это сделать??

у меня уже есть наработка, но оно как бы сказать.. незнаю...
я беру из базы статью, затем получаю собственно желаемый текст где все ссылки на статьи внутри сайта вида [[Статья]]. Затем припомощи цикла и preg_match я получаю заголовок страницы из базы (тобиш получается второй запрос + фетч_акос) и затем проверяю на предмет есть ли ссылка на такую статью...

но этот способ мне кажется нелогичным... может кто подскажет как лучше сделать?
PM MAIL WWW ICQ   Вверх
Pokoinik
Дата 12.6.2008, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 17.3.2007
Где: /dev/null

Репутация: 2
Всего: 3



feosr, а зачем это делать?
может будет проще, при открытии статьи, которой нету, сразу открывать контрол добавления статьи, а не насиловать сервер обработкой больших объемов данных при просмотре каждой статьи?


--------------------
ICQ: 490-993
Существует только 10 типов людей: те, которые понимают двоичную систему, и которые ее не понимают!!!
Опасайтесь людей верующих, ибо у них есть боги, которые им все прощают.

Делай или не делай! Никаких попробую!
Йода (Yoda), мастер-джедай
PM MAIL ICQ   Вверх
feosr
Дата 12.6.2008, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 20.1.2007
Где: Минск

Репутация: нет
Всего: 2



Собственно это просто прихоть)) понравилось реализация в MediaWIKI и просто для собственного рзвития сделать нечто подобное))

p.s. В медиавики непонятная реализация какая-то
PM MAIL WWW ICQ   Вверх
krundetz
Дата 12.6.2008, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Может лучше организовать так есть база таблица сушествующих ссылок при переходе по ней происходит запрос к ней чтобы выдать контент если его нет то страница создается автоматически и предлагается её заполнит. Если понравилась реализация в WediaWiki может стоит посмотреть как это сделано там, припятствий ведь ни каких нет.


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
feosr
Дата 21.8.2008, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 20.1.2007
Где: Минск

Репутация: нет
Всего: 2



У меня вопрос, почему неработает??

Код

$titles = mysql_query("SELECT title FROM dle_wikip");
$i = 1;
$titlearray = array();
while($row = $db->mysql_fetch_array($titles)){
    $titlearray[$i] = $row[0];
    $i++;
}

$text = 'Welcome! Use uhh hjgk gikjhgu klug or somethink [[Else|ElSe]]. [[Welcome_page_24|Kampai!]]!!!';

$text = preg_replace( "#\[\[(.+?)\|(.+?)\]\]#is"  , linker("\\1", "\\2"), $text );


function linker($lnk, $alt){
global $titlearray;
    if(in_array("{$lnk}", $titlearray)){
        return '<a href="'.$lnk.'">'.$alt.'</a>';
    }
    else{
        return '<a href="'.$lnk.'" style="color:#ff0000;">'.$alt.'</a>';
    }
}

echo $text;


Как результат выводит это:
Код

Welcome! Use uhh hjgk gikjhgu klug or somethink <a href="Else" style="color:#ff0000;">ElSe</a>. <a href="Welcome_page_24" style="color:#ff0000;">Kampai!</a>!!!


Я так понял что в функцию in_array эта переменная неидет так как если выводить ее чезер echo то выводиться \1

Если кто может помочь.... Массив для проверки вот такой:
Код

Array
(
    [1] => Welcome_page_1
    [2] => Welcome_page_2
    [3] => Welcome_page_3
    [4] => Welcome_page_4
    [5] => Welcome_page_5
    [6] => Welcome_page_6
    [7] => Welcome_page_7
    [8] => Welcome_page_8
    [9] => Welcome_page_9
    [10] => Welcome_page_10
    [11] => Welcome_page_11
    [12] => Welcome_page_12
    [13] => Welcome_page_13
    [14] => Welcome_page_14
    [15] => Welcome_page_15
    [16] => Welcome_page_16
    [17] => Welcome_page_17
    [18] => Welcome_page_18
    [19] => Welcome_page_19
    [20] => Welcome_page_20
    [21] => Welcome_page_21
    [22] => Welcome_page_22
    [23] => Welcome_page_23
    [24] => Welcome_page_24
    [25] => Welcome_page_25
    [26] => Welcome_page_26
    [27] => Welcome_page_27
    [28] => Welcome_page_28
    [29] => Welcome_page_29
    [30] => Welcome_page_30
    [31] => Welcome_page_31
    [32] => Welcome_page_32
    [33] => Welcome_page_33
    [34] => Welcome_page_34
    [35] => Welcome_page_35
    [36] => Welcome_page_36
    [37] => Welcome_page_37
    [38] => Welcome_page_38
    [39] => Welcome_page_39
    [40] => Welcome_page_40
    [41] => Welcome_page_41
    [42] => Welcome_page_42
    [43] => Welcome_page_43
    [44] => Welcome_page_44
    [45] => Welcome_page_45
    [46] => Welcome_page_46
    [47] => Welcome_page_47
    [48] => Welcome_page_48
    [49] => Welcome_page_49
    [50] => Welcome_page_50
    [51] => Welcome_page_51
    [52] => Welcome_page_52
    [53] => Welcome_page_53
    [54] => Welcome_page_54
    [55] => Welcome_page_55
    [56] => Welcome_page_56
    [57] => Welcome_page_57
    [58] => Welcome_page_58
    [59] => Welcome_page_59
    [60] => Welcome_page_60
    [61] => Welcome_page_61
    [62] => Welcome_page_62
    [63] => Welcome_page_63
    [64] => Welcome_page_64
    [65] => Welcome_page_65
    [66] => Welcome_page_66
    [67] => Welcome_page_67
    [68] => Welcome_page_68
    [69] => Welcome_page_69
    [70] => Welcome_page_70
    [71] => Welcome_page_71
    [72] => Welcome_page_72
    [73] => Welcome_page_73
    [74] => Welcome_page_74
    [75] => Welcome_page_75
    [76] => Welcome_page_76
    [77] => Welcome_page_77
    [78] => Welcome_page_78
    [79] => Welcome_page_79
    [80] => Welcome_page_80
    [81] => Welcome_page_81
    [82] => Welcome_page_82
    [83] => Welcome_page_83
    [84] => Welcome_page_84
    [85] => Welcome_page_85
    [86] => Welcome_page_86
    [87] => Welcome_page_87
    [88] => Welcome_page_88
    [89] => Welcome_page_89
    [90] => Welcome_page_90
    [91] => Welcome_page_91
    [92] => Welcome_page_92
    [93] => Welcome_page_93
    [94] => Welcome_page_94
    [95] => Welcome_page_95
    [96] => Welcome_page_96
    [97] => Welcome_page_97
    [98] => Welcome_page_98
    [99] => Welcome_page_99
    [100] => Welcome_page_100
)


Это сообщение отредактировал(а) feosr - 21.8.2008, 22:46
PM MAIL WWW ICQ   Вверх
Sannis
Дата 21.8.2008, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.8.2007
Где: Москва

Репутация: 6
Всего: 13



Прочитайте в мане по preg_peplace про модификатор "e". А в приведённом вам виде код имхо не должен работать.

Добавлено через 1 минуту и 17 секунд
Т.е. он-то работает, только посмотрите внимательно на вызов preg_peplace и попробуйте выступить в роли интерпретатора.


--------------------
Я Критик Джим, раньше писал моды для IPB 1.3.x-2.3.x, а теперь продвигаю Node.js в массы.
PM MAIL WWW   Вверх
feosr
Дата 22.8.2008, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 20.1.2007
Где: Минск

Репутация: нет
Всего: 2



Огромное спасибо)
Код

$text = preg_replace( "#\[\[(.+?)\|(.+?)\]\]#is e"  , 'linker("\\1", "\\2")', $text );

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0851 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.