как вытащить текст между тегами 2?

Vlad_c

Guest
как вытащить текст между тегами 2?

как вытащить текст между тегами?
<td align=right>75.71<td align=right>75.60
<tr>
нужно выдрать данные между ><
$str_exp = explode(">", $result);
выдирает только после > а нужно между ними

алгоритм:
1) найти >, запомнить позицию
2) найти следующую <, запомнить позицию
3) вырезать все, что между ними с помощью substr();

for ($i=1; $i<strlen($result); $i++) {

if (strpos($result[$i],'>')) {
$b1=$result[$i];
}
if (strpos($result[$i],'<')) {
$b2=$result[$i];
}
$result2=substr($result,$b1,$b2);
echo $result2;
}
почему не работает не разбирает строку вроде бы сделал как в алгоритме?

-~{}~ 12.02.04 11:05:

за алгоритм большое спасибо tony2001
 

Vlad_c

Guest
Notice: Undefined variable: b1 in C:\Internet\home\localhost\www\kurs.php on line 25


выдает столько раз сколько символов в строке
 

GD

Guest
Re: как вытащить текст между тегами 2?

Автор оригинала: Vlad_c
как вытащить текст между тегами?
<td align=right>75.71<td align=right>75.60
<tr>
нужно выдрать данные между ><
$str_exp = explode(">", $result);
выдирает только после > а нужно между ними

алгоритм:
1) найти >, запомнить позицию
2) найти следующую <, запомнить позицию
3) вырезать все, что между ними с помощью substr();

for ($i=1; $i<strlen($result); $i++) {

if (strpos($result[$i],'>')) {
$b1=$result[$i];
}
if (strpos($result[$i],'<')) {
$b2=$result[$i];
}
$result2=substr($result,$b1,$b2);
echo $result2;
}
почему не работает не разбирает строку вроде бы сделал как в алгоритме?

-~{}~ 12.02.04 11:05:

за алгоритм большое спасибо tony2001
PHP:
for ($i=1; $i<strlen($result); $i++) {

if (strpos($result[$i],'>')) {
$b1=$result[$i];
}
if (strpos($result[$i],'<')) {
$b2=$result[$i];
}
if (isset($b1) && isset($b2) && $b1 < $b2) {
$result2=substr($result,$b1,$b2-$b1);
echo $result2;
unset($b1);
unset($b2);
}
}
 

Vlad_c

Guest
и про b2 тоже самое

-~{}~ 12.02.04 11:14:

так вообще молчит и ничего не выводит

-~{}~ 12.02.04 11:16:

такое чувство что не работает это:
if (strpos($result[$i],'>')) {
$b1=$result[$i];
}
if (strpos($result[$i],'<')) {
$b2=$result[$i];
}
 

Demiurg

Guest
GD
ты перед там, как править код спотри и думай, что он делает.

Vlad_c
давай разбирать код вместе. перавя строчка что делает ?
 

Vlad_c

Guest
Demiurg в каком именно фрагменте там где с циклом или где ищем начоло позиции?
 

Vlad_c

Guest
в начале делаем цикл от 1 символа до конца всей строки
затем ищем первую позицию strpos($result[$i],'>' где встречается символ > запоминаем ее $b1=$result[$i];
тоже самое с <, а затем считываем от начала нашей позиции до конечной позиции $result2=substr($result,$b1,$b2);
 

Demiurg

Guest
>Demiurg в каком именно фрагменте там где с циклом или где ищем начоло позиции?
там, где 1 строчка.
скажи, слова "делаем цикл" для тебя как магическое заклинание звучит ?
 

Demiurg

Guest
Alkinoy
GD
вы можете не мешать ?

Vlad_c
"как будет правильно" - это вопрос, предложение или утверждение ?
 

Vlad_c

Guest
блин ну никак не получается, ну не издевайтесь помогите
 

Demiurg

Guest
давай теперь реализовывать алгоритм.
сначала что надо сделать ?
 

Vlad_c

Guest
ну вся проблема в организации цикла
for ($i=1; $i<strlen($result); $i++) {

if (strpos($result,'>')==true) {
$b1=strpos($result,'>');
}
if (strpos($result,'<')==true) {
$b2=strpos($result,'<');
}
$result2=substr($result,$b1,$b2);
echo $result2;
}
так он каждый раз находит одно и тоже первое значение между ><, т.е. недвигается по строке

-~{}~ 12.02.04 12:18:

1) найти >, запомнить позицию
if (strpos($result,'>')==true) {
$b1=strpos($result,'>');
}
2) найти следующую <, запомнить позицию
if (strpos($result,'<')==true) {
$b2=strpos($result,'<');
}
3) вырезать все, что между ними с помощью substr();
$result2=substr($result,$b1,$b2);
 
Сверху