Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » регулярные выражения русские буквы в кодировке Юникод

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

volod3000



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть такой плагин к Joomla (SEO KeyWord Link). Задача плагина на любое слово на сайте повесить URL. Но он не работает с кириллицой .
 

Код:
 
<?php
/**
 * plg_KeyWordLink A plugin that allows you to define keyword/link .The keywords will be automatically hyper linked in all the Joomla content
 
By : Sharif Mamdouh
http://www.iNowWeb.com
 
 */
 
 
// no direct access
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;
}
?>
 

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

Всего записей: 134 | Зарегистр. 03-04-2007 | Отправлено: 17:16 08-10-2010
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
volod3000

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

так кирилица или уникод?  
если уникод - читать о mb_ereg_replace
если 1251 кодировка, то ставить setlocale
 
ps: и на будущее PHP: Регулярные выражения (RegExp, Regular, eregi, preg)

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:42 08-10-2010 | Исправлено: Cheery, 21:43 08-10-2010
volod3000



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо Cheery !
 
Буду пробовать разбираться (правда голова уже пухнет)

Всего записей: 134 | Зарегистр. 03-04-2007 | Отправлено: 01:00 09-10-2010
volod3000



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Провел полный (по своим возможностям) анализ и пришел к выводу ,
что р. выражение
 

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

 
 
не пропускает кириллицу .
 
Как исправить ?

Всего записей: 134 | Зарегистр. 03-04-2007 | Отправлено: 19:59 09-10-2010
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
volod3000

Цитата:
Как исправить ?

написал же.. либо локаль.. либо заменить на [а-я] и аналогичное..
все вопросы в указанную выше тему

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:10 09-10-2010
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » регулярные выражения русские буквы в кодировке Юникод


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru