ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Замена слов с http:// на ссылки
  #1  
Старый 02.12.2008, 20:58
Ru}{eeZ
Постоянный
Регистрация: 19.02.2008
Сообщений: 438
Провел на форуме:
956872

Репутация: 186
Отправить сообщение для Ru}{eeZ с помощью ICQ
По умолчанию Замена слов с http:// на ссылки

Заипалсо немного, вот что намутил:

PHP код:
    $_POST['bodyUser'] = split(' '$_POST['bodyUser']);
    
//var_dump($_POST['bodyUser']);
    
foreach($_POST['bodyUser'] as $oneBodyUser) {
      if(
strpos($oneBodyUser'http://')) $_POST['bodyUser'] .= ' '.str_replace($oneBodyUser'<a href = "$oneBodyUser">$oneBodyUser</a>'$oneBodyUser);
      
$_POST['bodyUser'] .= ' '.$oneBodyUser;
    }
    
var_dump($_POST['bodyUser']); 
ещё пробовал закидывать в массив, потом имплоадить...

станд.: Чё я не так делаю?
 
Ответить с цитированием

  #2  
Старый 02.12.2008, 21:10
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

PHP код:
$slovo='http://prekol111';
$slovo explode('//'$slovo);
if (
$slovo[0]=='http:' or $slovo[0]=='https:'){$res="<a href ='$slovo[0]//$slovo[1]'>$slovo[1]</a>";} 
echo 
$res

Последний раз редактировалось Pashkela; 03.12.2008 в 00:15..
 
Ответить с цитированием

  #3  
Старый 02.12.2008, 21:10
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

Ru}{eeZ
PHP код:
echo preg_replace('#(https?://[^ ]*)#i','<a href="\\1">\\1</a>',$_POST['bodyUser']); 
Не?
 
Ответить с цитированием

  #4  
Старый 02.12.2008, 21:15
[dei]
Участник форума
Регистрация: 24.11.2008
Сообщений: 205
Провел на форуме:
1123418

Репутация: 362
Отправить сообщение для [dei] с помощью ICQ
По умолчанию

Ru}{eeZ, учи регулярки.
http://phpclub.ru/detail/article/regexp_1
http://phpclub.ru/detail/article/regexp_2
 
Ответить с цитированием

  #5  
Старый 02.12.2008, 21:36
Ru}{eeZ
Постоянный
Регистрация: 19.02.2008
Сообщений: 438
Провел на форуме:
956872

Репутация: 186
Отправить сообщение для Ru}{eeZ с помощью ICQ
По умолчанию

Регулярки медленнее, не хотел их использовать, поэтому я хотел через строковые замутить

Последний раз редактировалось Ru}{eeZ; 02.12.2008 в 21:40..
 
Ответить с цитированием

  #6  
Старый 02.12.2008, 21:50
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

Ru}{eeZ А циклы страшного вида, и explode - гораздо быстрее видимо

PHP код:
$in=array_fill(0,50,'http://yandex.ru')+array_fill(51,50,'просто текст')+array_fill(101,20,'<br>');
shuffle($in);
$a=implode(' ',$in);

$start=microtime(true);
$a1=preg_replace('#(http://[^ ]*)#i','<a href="\\1">\\1</a>',$a);
echo 
microtime(true)-$start;
$a=implode(' ',$in);
echo 
'<br />';
$start=microtime(true);
// А тут исправленный вариант того, что хотел ты
$a=split(' '$a);
$a2='';
    foreach(
$a as $oneBodyUser) {
      if(
strpos($oneBodyUser'http://')===false) {$a2 .= ' '.$oneBodyUser;} else
      {
$a2 .= " <a href ='$oneBodyUser'>$oneBodyUser</a>";}
    }
echo 
microtime(true)-$start;
echo 
'<br><h3><font color="green">'.$a1.'</font></h3>';
echo 
'<br><h3><font color="red">'.$a2.'</font></h3>'
Это вам для сравнения. Все хорошо к месту - если требуется простая обработка - заменить одну букву на другую например - то строковые, а вот если эти строковые функции начнешь циклить и усложнять - то.... Разница - от 20 до 200 раз

З.Ы. у тя в коде была ошибка в цикле, ты одновременно перебирал массив $_POST['bodyUser'] и одновременно в цикле обращался к ней, как если это строковая переменная
З.Ы.Ы. Переделал пример для наглядности, и исправил ошибки в твоей версии - спасибо astrologer

Последний раз редактировалось Gifts; 02.12.2008 в 22:31..
 
Ответить с цитированием

  #7  
Старый 02.12.2008, 22:09
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

int strpos( string $haystack , mixed $needle [, int $offset ]);

Warning

This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE, such as 0 or "". Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ссылки на сайты и книги по C#, Программирование на C# NeuRonix С/С++, C#, Delphi, .NET, Asm 8 11.12.2009 11:02



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ