Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965

URL > активная ссылка

24.02.2016, 12:15. Показов 1033. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
PHP
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
    private function _urlToLink($aMatches)
    {       
        $sHref = null;
        $sName = null;
        
        $aMatches[2] = trim($aMatches[2]);
 
        if (empty($aMatches[2]))
        {
            return '';
        }
        
        $sHref = $aMatches[2];
        
        if ($sHref == 'ftp.')
        {
            return ' ' . $sHref;    
        }
        
        if (!preg_match('/^(http|https|ftp):\/\/(.*?)$/i', $sHref))
        {
            $sHref = 'http://' . $sHref;
        }       
 
        $sName = $aMatches[2];      
        if (Phpfox::getParam('core.shorten_parsed_url_links') > 0)
        {
            $amount = mb_strlen($sName);
            $sName = ($amount > Phpfox::getParam('core.shorten_parsed_url_links')) ? mb_substr($sName, 0, 20) . ' ... ' . mb_substr($sName, $amount -15, $amount) : $sName;
        }       
 
        if (Phpfox::getParam('core.warn_on_external_links'))
        {
            if (!preg_match('/' . preg_quote(Phpfox::getParam('core.host')) . '/i', $sHref))
            {
                $sHref = Phpfox::getLib('url')->makeUrl('core.redirect', array('url' => Phpfox::getLib('url')->encode($sHref)));
            }
        }
 
        return "<a href=\"" . $sHref . "\" target=\"_blank\" title=\"" . $sHref . "\">" . $sName . "</a> ";
    }
Вот функция, которая переводит URL в активную ссылку, но если вводить URL с самого начала новой строки (в смысле перед адресом нет ни пробела, ни какого та текста) то адрес будет как обычный текст, хотя код:
PHP
1
2
            $amount = mb_strlen($sName);
            $sName = ($amount > Phpfox::getParam('core.shorten_parsed_url_links')) ? mb_substr($sName, 0, 20) . ' ... ' . mb_substr($sName, $amount -15, $amount) : $sName;
изменит внешний вид анкора, то есть на экране будет отображаться только анкор от ссылке, без самой ссылки.
Как сделать, что бы все адреса становились активными?
Спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.02.2016, 12:15
Ответы с готовыми решениями:

Открыть URL (там ссылка, которая совершает переход на другой URL) и вытянуть новый URL
Стоит задача по одному URL получить другой Пробовал открывать URL через webbrowser, но это не совсем то, что нужно, в идеале вообще не...

Активная ссылка > не активная
Здравствуйте, у меня есть вопрос не знаю точно в какой раздел его задать поэтому спрашиваю тут. Как сделать ссылку на которой находишься...

Активная ссылка
Всем привет, такой вопрос, есть ссылка картинкой с использованием ховера, нужно сделать так чтоб когда она была активная оставался рисунок...

10
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
24.02.2016, 12:21
предположу что в _urlToLink передается результат preg_match/_all
покажите участок кода с вызовом _urlToLink
0
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
24.02.2016, 12:43  [ТС]
Вот, что удалось найти:
PHP
1
2
            $sTxt = preg_replace_callback('#([\s>])([\w]+?://[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is', array(&$this, '_urlToLink'), $sTxt);
            $sTxt = preg_replace_callback('#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is', array(&$this, '_urlToLink'), $sTxt);
Добавлено через 36 секунд
Я так понимаю, что функция вызывается тут: array(&$this, '_urlToLink')?
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
24.02.2016, 12:46
заменить на
PHP
1
2
3
            if ( @$sTxt[0] !== " " ) { $sTxt = " ".$sTxt; }
            $sTxt = preg_replace_callback('#([\s>])([\w]+?://[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is', array(&$this, '_urlToLink'), $sTxt);
            $sTxt = preg_replace_callback('#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is', array(&$this, '_urlToLink'), $sTxt);
0
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
24.02.2016, 12:56  [ТС]
К сожалению, не помогло...

Добавлено через 1 минуту
Видимо, где то убираются пробелы впереди...
Поищу.
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
24.02.2016, 13:10
PHP
1
2
3
4
            if ( @$sTxt[0] !== " " ) { $sTxt = " ".$sTxt; }
            $sTxt = preg_replace_callback('#([\s>])([\w]+?://[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is', array(&$this, '_urlToLink'), $sTxt);
            if ( @$sTxt[0] !== " " ) { $sTxt = " ".$sTxt; }
            $sTxt = preg_replace_callback('#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is', array(&$this, '_urlToLink'), $sTxt);
0
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
24.02.2016, 13:12  [ТС]
Тоже не получилось...
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
24.02.2016, 13:36
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
 
            
            while( ob_get_clean() );
            
            var_dum($sTxt);
            $sTxt = preg_replace_callback('#([\s>])([\w]+?://[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is', array(&$this, '_urlToLink'), $sTxt);
 
            var_dum($sTxt);
            $sTxt = preg_replace_callback('#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is', array(&$this, '_urlToLink'), $sTxt);
            var_dum($sTxt);
            exit;
что покажет
0
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
24.02.2016, 18:21  [ТС]
С такими правками, сайт недоступен...
Ладно, фиг с ним, как ни будь разберусь...
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
24.02.2016, 20:16
Цитата Сообщение от Raisin Zn Посмотреть сообщение
С такими правками, сайт недоступен...
Ладно, фиг с ним, как ни будь разберусь...
не большая ошибка.
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
            
            while( ob_get_clean() );
            
            var_dump($sTxt);
            $sTxt = preg_replace_callback('#([\s>])([\w]+?://[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is', array(&$this, '_urlToLink'), $sTxt);
 
            var_dump($sTxt);
            $sTxt = preg_replace_callback('#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is', array(&$this, '_urlToLink'), $sTxt);
            var_dump($sTxt);
            exit;
надо так
0
 Аватар для Raisin Zn
101 / 100 / 51
Регистрация: 19.04.2011
Сообщений: 965
06.03.2016, 18:00  [ТС]
Извиняюсь за долгое молчание...
С такими правками трижды отображается сообщение, где размещены ссылки, первая копия все, как обычный текст, вторые две имеют ссылки обработанные функцией _urlToLink, но не актины, то есть результат тот же...

Добавлено через 1 минуту
Думаю, что проблема, кроится в этих строках:
PHP
1
2
            $sTxt = preg_replace_callback('#([\s>])([\w]+?://[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is',   array(&$this, '_urlToLink'), $sTxt);     
            $sTxt = preg_replace_callback('#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is', array(&$this, '_urlToLink'), $sTxt);
Добавлено через 2 часа 40 минут
PHP
1
return "<a href=\"" . $sHref . "\" target=\"_blank\" title=\"" . $sHref . "\">" . $sName . "</a> ";
Заменил на:
PHP
1
        return $aMatches[1] . '<a href="' . $sHref . '" target="_blank" title="' . $sHref . '">' . $sName . '</a>';
Теперь все работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.03.2016, 18:00
Помогаю со студенческими работами здесь

Не активная ссылка
.site-navigation a, .user-navigation a { color: #000000; padding-bottom: 10px; } .site-navigation a:hover, ...

Активная ссылка
У меня похожая проблема. Интернет сказал что с помощью одного css это не решить, нужен JS.:(

активная ссылка
Добрый день,имеется следующий код: &lt;form action=&quot;on_run.php&quot; method=&quot;POST&quot;&gt; &lt;? while($data =...

Активная ссылка
Есть такие вот две кнопки &lt;a href=&quot;/ua/index.html&quot;&gt;УКР&lt;/a&gt; &lt;a href=&quot;/&quot;&gt;РУС&lt;/a&gt; Подскажите, как можно сделать так, чтобы при...

Активная и неактивная ссылка
Есть такая ссылка, выполненная в виде кнопки: &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset=&quot;utf-8&quot;&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru