Натолкните на путь истинный

12
cancel
На сайте с 03.06.2009
Offline
24
1536

1. Хочу сделать онлайн трансляцию соревнований на своем сайте (CMS Joomla), для начала решил ограничиться просто счетом - названия команд, счет и мини-статистика (удаления, бомбардиры итп). Реализовать это в принципе у меня получилось скриптом парсинга другого сайта, но никак не могу автоматизировать refresh скрипта - можно ли как-то организовать это средствами php?

2. Есть такой плагин к Joomla, называется SEO Links - суть в том, что можно на любое слово в тексте повесить URL. Проблема такая - он не работает с кириллицой :(

Скрипт довольно простой:

defined( '_JEXEC' ) or die( 'Restricted access' );


$mainframe->registerEvent('onPrepareContent', 'plgContentKeyWordLink');



function plgContentKeyWordLink(&$row, &$params, $page=0)
{
if (is_object($row)) {
return plgKeyWordLink($row->text, $params);
}
return plgKeyWordLink($row, $params);
}



function plgKeyWordLink(&$text, &$params)
{


$plugin = & JPluginHelper::getPlugin('content', 'KeyWordLink');

// Load plugin params info
$pluginParams = new JParameter($plugin->params);
$keywords = $pluginParams->get('keywords');
$mode=$pluginParams->get('mode');
$target=$pluginParams->get('target');
$limit=$pluginParams->get('limit');

//$keywords='Web site|http://www.inowweb.com/web-design
//Joomla|http://www.inowweb.com/internet-marketing
//';
if($mode==0)
{
$mode="rel='nofollow'";
}
else if ($mode==1)
{
$mode="";

}


if($target==0)
{
$target='target="_parent"';
}
else if ($target==1)
{
$target='target="_blank"';

}


$keys=explode("\n", $keywords);

foreach ($keys as $key)
{
$pat='/([\w\W]*?)\|([\w\W]*)/';
if(preg_match_all($pat,$key,$matches,PREG_SET_ORDER))
{
foreach ($matches as $match)
{
$keyword=$match[1];
$link=$match[2];
$replace='<a href="'.$link.'" '.$target.' title="'.$keyword.'"'.$mode.'>'.$keyword.'</a>';

$case="i";
$regEx = '\'(?!((<.*?)|(<a.*?)))(\b'. $keyword . '\b)(?!(([^<>]*?)>)|([^>]*?</a>))\'s'. $case;
$text = preg_replace($regEx,$replace,$text,$limit);

}
}
}


return true;
}
?>

Думаю основная проблема в этой выборке:

$pat='/([\w\W]*?)\|([\w\W]*)/';

по каким-то причинам не выбирается кириллица (UTF-8), есть ли способ заставить работать этот плагин с кириллицей?

cancel
На сайте с 03.06.2009
Offline
24
#1

up

готов по второму вопросу поощрить финансово :)

T
На сайте с 13.01.2009
Offline
50
#2

Для UTF-8 модификатор u надо использовать

Troytft добавил 03.07.2010 в 20:57

По первому, добавте задачу в CRON , на каждом хостинге есть

[Удален]
#3
$pat='/([a-zA-Zа-яА-Я]*?)\|([a-zA-Zа-яА-Я]*)/u';

вот так попробуйте

T
На сайте с 13.01.2009
Offline
50
#4

bearman, тоже самое, поощрение себе хочешь ?)))

[Удален]
#5
Troytft:
bearman, тоже самое

проверь :)

cancel
На сайте с 03.06.2009
Offline
24
#6

bearman, Troytft,

Использовал 2 варианта:

$pat='/([\w\W]*?)\|([\w\W]*)/u';

и

$pat='/([a-zA-Zа-яА-Я]*?)\|([a-zA-Zа-яА-Я]*)/u';

Во втором случае даже с латиницей перестало нормально работать, особенно с двухсловными ключевиками - url назначения по каким-то причинам становился таким: http://site.ru/http

файл плагина пересохранял в utf-8

[Удален]
#7

cancel, вот здесь

$pat='/([\w\W]*?)\|([\w\W]*)/';
if(preg_match_all($pat,$key,$matches,PREG_SET_ORDER))
{

делаем

$pat='/([a-zA-Zа-яА-Я]*?)\|([a-zA-Zа-яА-Я]*)/u';
if(preg_match_all($pat,$key,$matches,PREG_SET_ORDER))
{
print_r($matches);die();

и показываем на форум что получается из этой регулярки :)

bearman добавил 05.07.2010 в 00:55

ну или можно тупо заменить

$pat='/([\w\W]*?)\|([\w\W]*)/u';

на

$pat='/([\S]*?)\|([\S]*)/u';

это будет "пожаднее" условие, но возможно оно вам и нужно :) ведь дальше все равно фильтр стоит

cancel
На сайте с 03.06.2009
Offline
24
#8
bearman:
и показываем на форум что получается из этой регулярки

Вот что получилось:

Array ( [0] => Array ( [0] => Mercedes|http [1] => Mercedes [2] => http ) )

Русские ключевики не отобразились :(

[Удален]
#9

cancel, ааааааааа

так у вас ссылки записываются в текстовое поле в виде


my big keyword|http://..
My olol keyword|http://...

??

если так, то жумла гении опять через зад достают гланды

bearman добавил 05.07.2010 в 12:02

покажите формат указания ссылок в админке или тп

cancel
На сайте с 03.06.2009
Offline
24
#10
bearman:
так у вас ссылки записываются в текстовое поле в виде

Именно так, в админке есть текстовое поле в которое заносятся данные.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий