X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Нужны советы по поводу оптимизации функции вырезания заданной подстроки
plamar
plamar
Topic Starter сообщение 28.2.2010, 15:54; Ответить: plamar
Сообщение #1


Бывалый
****

Группа: User
Сообщений: 264
Регистрация: 4.11.2008
Поблагодарили: 21 раз
Репутация:   8  


Задача вырезать с отпарсенной страницы все теги ссылок. Написал следующую функцию:

/////////////////////    удаляем сcылки
$contentBlock=KAstr_ALL_replace($contentBlock,"<a",">","");
$contentBlock=str_ireplace("</a>","",$contentBlock);

//Замета всех участкок строки $string, начинающихся подстрокой $begin и заканчивающегося подстрокой $end. Вместо этих участков вставляется $replacement
function KAstr_ALL_replace($string, $begin, $end, $replacement)
{
     $posopen=0;
     while(1)
     {
          $posopen = stripos($string,$begin,$posopen);
         if($posopen===false)return $string;//!!!!!!

         $posclose = stripos($string,$end,$posopen+strlen($begin));
         if($posclose===false)return $string; //!!!!!!!

         $length = $posclose-$posopen+strlen($end);

         $string=substr($string,0,$posopen).substr($string,$posclose+strlen($end),strlen($string)-($posclose+strlen($end)));
    }
}


Проблема в том, что например для данной страницы http://ru.wikipedia.org/wiki/%D0%92%D0%B8%...%B4%D0%B8%D1%8F - функция выполняется около 40 секунд. Можно ли это дело как нибудь ускорить?


--------------------
EA-WS.com - API для автоперевода. 0,02$ за 1000 знаков.
Datacol - универсальный парсер контента, 64+ готовых парсера от 459 руб/мес.!
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
molfar
molfar
сообщение 28.2.2010, 16:05; Ответить: molfar
Сообщение #2


Новичок
*

Группа: User
Сообщений: 39
Регистрация: 26.2.2010
Поблагодарили: 9 раз
Репутация:   2  


может здесь лучше подойдет стандартная функция strip_tags() ?)


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
life
life
сообщение 28.2.2010, 16:06; Ответить: life
Сообщение #3


Завсегдатай
*****

Группа: Active User
Сообщений: 921
Регистрация: 28.1.2009
Поблагодарили: 147 раз
Репутация:   -4  


function all_replace($pattern, $replacement, $allcode) {
$fincode = preg_replace('/$pattern/i',$replacement,$allcode);
return $fincode;
}


/////////////////////    удаляем сcылки
$contentBlock=all_replace("<a(.*?)>","",$contentBlock);
$contentBlock=all_replace("<\/a>","",$contentBlock);


так не проще?

Сообщение отредактировал life - 28.2.2010, 16:17
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
seotouch
seotouch
сообщение 28.2.2010, 16:09; Ответить: seotouch
Сообщение #4


Прощайте!
*****

Группа: Active User
Сообщений: 998
Регистрация: 7.1.2009
Поблагодарили: 405 раз
Репутация:   45  


(life @ 28.2.2010, 15:06) *
preg_replace('/<a(.*?)>/i','',$contentBlock);
preg_replace('/<\/a>/i','',$contentBlock);
так не проще?

$contentBLock =preg_replace('/<a.+?<\/a>/is', '', $contentBlock);


--------------------
Навсегда ушел
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
life
life
сообщение 28.2.2010, 16:16; Ответить: life
Сообщение #5


Завсегдатай
*****

Группа: Active User
Сообщений: 921
Регистрация: 28.1.2009
Поблагодарили: 147 раз
Репутация:   -4  


(seotouch @ 28.2.2010, 15:09) *
$contentBLock =preg_replace('/<a.+?<\/a>/is', '', $contentBlock);

я в регулярках не силен
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Бесплатные советы по улучшению юзабилити сайта
5-10 пунктов на человека, публично в теме
6 Caterpillar 661 Сегодня, 14:00
автор: kreodiz
Горячая тема (нет новых ответов) Нужны ли SEO курсы
44 ByhAnka 7421 4.12.2017, 16:29
автор: mussan
Горячая тема (нет новых ответов) Нужны: 1 копирайтер-рерайтер + 1 контент менеджер
32 RIperNP 4217 27.11.2017, 21:00
автор: RIperNP
Открытая тема (нет новых ответов) Нужны рерайтеры, тематика "ставки на спорт",40р.
12 Eka 1653 26.11.2017, 12:23
автор: Mikki
Открытая тема (нет новых ответов) Нужны копирайтеры, 40 р. за 1000 символов.
13 contentos 1611 17.11.2017, 5:41
автор: Pitstops


 



RSS Текстовая версия Сейчас: 11.12.2017, 15:41
Дизайн