Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2014, 12:29   #1
UKRtortik
Форумчанин
 
Регистрация: 25.02.2014
Сообщений: 366
По умолчанию почему не работает функция

Код:
<?php
function getTextBetween($text, $leftBorder, $rightBorder = null)
{
$offset = stripos($text, $leftBorder);
if ($offset === false)
return false;
$offset += strlen($leftBorder);
if ($rightBorder === null)
return substr($text, $offset);
$offset2 = stripos($text, $rightBorder, $offset);
if ($offset2 === false)
return false;
return substr($text, $offset, $offset2-$offset);
}
$text = file_get_contents('http://www.yandex.ru/');	
$leftBorder "<title>";
$rightBorder "</title>";
echo getTextBetween($text, $leftBorder, $rightBorder = null);
?>
Что я не так делаю?
UKRtortik вне форума Ответить с цитированием
Старый 20.04.2014, 12:38   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Здесь глупости какие-то написаны:
Цитата:
Сообщение от UKRtortik Посмотреть сообщение
Код:
$leftBorder "<title>";
$rightBorder "</title>";
Поиск ошибок и отладка
Andkorol вне форума Ответить с цитированием
Старый 20.04.2014, 13:11   #3
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Вообще бред
Цитата:
Код:
echo getTextBetween($text, $leftBorder, $rightBorder = null);
Кольша вне форума Ответить с цитированием
Старый 20.04.2014, 13:18   #4
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Ничего :DDDD. Бывает !

Я по началу еще и не такое строил.
................................... ....
TC, А какой был план ? Ватсон ?

Цитата:
Andkorol.
Отправил человека дебагить. Не стыдно ?
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 20.04.2014, 13:47   #5
UKRtortik
Форумчанин
 
Регистрация: 25.02.2014
Сообщений: 366
По умолчанию

а как правильно пользоватся этой функцией?
UKRtortik вне форума Ответить с цитированием
Старый 20.04.2014, 14:00   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от pompiduskus Посмотреть сообщение
Отправил человека дебагить. Не стыдно ?
Нет.
Andkorol вне форума Ответить с цитированием
Старый 21.04.2014, 17:29   #7
UKRtortik
Форумчанин
 
Регистрация: 25.02.2014
Сообщений: 366
По умолчанию

ну так как будет правильно?
UKRtortik вне форума Ответить с цитированием
Старый 21.04.2014, 18:04   #8
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

А что ты хотел выполнить ? Какой был план ?
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 21.04.2014, 18:13   #9
UKRtortik
Форумчанин
 
Регистрация: 25.02.2014
Сообщений: 366
По умолчанию

парсить без регулярных выражений
UKRtortik вне форума Ответить с цитированием
Старый 21.04.2014, 19:10   #10
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Парсить без регулярок достаточно легко.
Код:
function GetTextInBorders($strFrom, $leftBorder, $rightBorder)
{
 $leftPos = strrpos($strFrom, $leftBorder);
 $rightPos = strrpos($strFrom, $rightBorder, $leftPos);
 return substr($strFrom, $leftPos, $rightPos - $leftPos);
}

function GetTextInTag($strFrom, $Tag)
{
 $leftPos = strrpos($strFrom, $Tag);
 $leftPos = strrpos($strFrom, '>', $leftPos);
 $rightPos = strrpos($strFrom, '<', $leftPos);
 return substr($strFrom, $leftPos, $rightPos - $leftPos);
}

\\test
$str = '
before
 <a href="http://test.ru/ololo.php">
  TEXT
 </a>
after
';
$strInBorders = GetTextInBorders($str, '<a href="', '">'); \\ http://test.ru/ololo.php
$strInTag = GetTextInTag($str, 'a'); \\ TEXT
Собственно это только часть работы, обязательно понадобится продвигаться по дереву тегов, но для этого можно удалять тот текст, который уже достали и двигаться внутрь по переменным.
Так же можно добавить функцию, которая будет возвращать содержимое тега, т.е. '<a href="http://test.ru/ololo.php">'.
Код:
$str = '
before
 <a href="http://test.ru/ololo.php">
  <div>
   TEXT
  </div>
 </a>
after
';
$div = GetTextInTag($str, 'a'); \\ <div>TEXT</div>
$text = GetTextInTag($str, 'div'); \\ TEXT
И еще один пример
Код:
$str = '
before
 <a href="http://test.ru/ololo.php">TEXT</a>
 <a href="http://test.ru/ololo2.php">TEXT2</a>
after
';
$link1 = GetTextInBorders($str, '<a href="', '">'); \\ http://test.ru/ololo.php
$str = substr($str, strrpos($str, strrpos($str, '</a>') + 4, strrpos($str, '<a href="'. $link1 .'">'));
$link2 = GetTextInBorders($str, '<a href="', '">'); \\ http://test.ru/ololo2.php
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает DLL - функция, содержащая CDialog? Dmitry_B Visual C++ 0 20.01.2013 10:58
Почему не работает функция? в чем может быть ошибка? StivinKing Visual C++ 4 24.12.2012 19:17
Не могу понять почему не работает функция SeRhy JavaScript, Ajax 0 09.02.2012 17:41
Почему не работает функция? Jony Wocker Общие вопросы C/C++ 2 21.04.2010 00:01
Почему не работает функция? rocky7 Общие вопросы C/C++ 2 17.02.2009 08:37