Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по html_get_content, Как получить строку между двумя строками 
:(
    Опции темы
Win MK 32
Дата 14.6.2012, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 492
Регистрация: 15.7.2002

Репутация: нет
Всего: нет



Получаем текст в веб-страницу засчет html_get_content. Надо получить текст между <div id=mydiv>" и "</div>", как его получить? Хочется седалать функцию, которая бы делала это (параметры: $Url, $beginStr, $endStr)
PM   Вверх
Sanchezzz
Дата 14.6.2012, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



strpos первый параметр  strpos второй параметр  потом substr отмерили по позициям 


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Sanchezzz
Дата 14.6.2012, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Код

function mb_between($url, $start, $end, $encoding = null) {
      $string = file_get_contents($url);
      if($string===false) return false;
      $encd =(is_null($encoding) === true)? 'utf-8' : $encoding;
        
     $pos1 = mb_strpos($string,$start,0,$encd);
     if ($pos1 === false ) return false;
     $pos1 += mb_strlen($start,$encd);     
     $pos2 = mb_strpos($string,$end,$pos1,$encd) - $pos1;
     return mb_substr($string,$pos1,$pos2,$encd);
    }

print mb_between($url = '', '[',']', 'utf-8');

Можно еще регуляркой



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
teroni
Дата 15.6.2012, 01:02 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 15.5.2007
Где: Днепропетровск

Репутация: 8
Всего: 22



Или explode
Код

function get_between($str, $begin, $end)
{
$tmp1 = explode($begin, $str);
$tmp2 = explode($end, $tmp1[1]);
return $tmp2[0];
}

Естественно, найдёт только первое вхождение, если там нет открывающего фрагмента - выдаст ошибку, если закрывающего - тоже неправильный вариант. Так что моя функция - чисто для демонстрации.
А вообще, я бы регуляркой делал, люблю я их и короче всего получается.
Код

function get_between($str, $begin, $end)
{
if (!preg_match('/'.preg_quote($begin).'(.+)'.preg_quote($end).'/isU', $str, $match))
   return false;
else
   return $match[1];
}

PM MAIL   Вверх
Win MK 32
Дата 27.8.2012, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 492
Регистрация: 15.7.2002

Репутация: нет
Всего: нет



Ребята, подскажите пожалуйста. Как переделать функцию, чтобы добавить еще два входных аргумента: номер входящего в $str текста из $begin и номер найденного фрагмента для $end?

Т.е. чтобы было примерно так:
function get_between($str, $begin, $end, $b_num,$e_num)

Например для такого случая(я выделил искомое жирным):
Цитата

<div id="mydiv">Не искомое значение</div><div id="mydiv"><div id="mydiv">Искомое значение</div></div>

Так понимаю можно обойтись без параметра $e_num.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0618 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.