Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вытащить кусок из HTML??
 
 автор: Alex Boxgorn   (15.01.2009 в 21:57)   письмо автору
 
 

Ни как не могу сообразить как правильно сделать. Через поиск пересмотрел примеры и не получается вытащить кусок текста из HTML.
Есть кусок кода страницы сайта.
<tr> 
                <td height="80"><span class="bottomtext0">Телефон (388) 385-02-62</td>
                  
                <td></td>
              </tr>
              <tr> 
                <td class="bottomtext">Вопрос / Ответ</td>
                <td height="60"></td>

Необходимо вытащить в переменную кусок текста от слова Телефон до </td>. Т.е. получить из текста кусок Телефон (388) 385-02-62</td>
Как это правильно сделать с помощью регулярных выражений.
Спасибо заранее!

  Ответить  
 
 автор: AcidTrash   (15.01.2009 в 22:47)   письмо автору
 
   для: Alex Boxgorn   (15.01.2009 в 21:57)
 

Не известна вся страница, но по вашему примеру
<pre>
<?
$text
='<tr>
<td height="80"><span class="bottomtext0">Телефон (388) 385-02-62</td>
<td></td>
</tr>
<tr>
<td class="bottomtext">Вопрос / Ответ</td>
<td height="60"></td>'
;
preg_match_all("#<span class=\"bottomtext0\">(.+?)</td>#",$text,$out);
print_r($out);
?>

  Ответить  
 
 автор: Alex Boxgorn   (16.01.2009 в 08:22)   письмо автору
 
   для: AcidTrash   (15.01.2009 в 22:47)
 

А русский текст не ищет данная функция?
вот в этой ситуации возвращает пустое значение, а не этот текст (388) 385-02-62.
<?php
$text
='<tr> 
<td height="80"><span class="bottomtext0">Телефон (388) 385-02-62</td> 
<td></td> 
</tr> 
<tr> 
<td class="bottomtext">Вопрос / Ответ</td> 
<td height="60"></td>'
;
preg_match_all("#Телефон(.+?)</td>#",$text,$out); 
print_r($out); 
?>


Как в таком случае быть?

  Ответить  
 
 автор: Alex Boxgorn   (16.01.2009 в 10:05)   письмо автору
 
   для: Alex Boxgorn   (16.01.2009 в 08:22)
 

Я разобрался. В слове телефон была английская буква "е".
А как из ассоциативного массива данные доставать?
У меня всегда беда с работой с массивами ни как не могу правильно с ними научиться работать.
Вот так не работает :-(

$z1=$out[1,0];
echo($zz);

Хотя данные в массиве присутствуют
Array
(
[0] => Array
(
[0] => Tелефон (388) 385-02-62</td>
)

[1] => Array
(
[0] => (388) 385-02-62
)

)

  Ответить  
 
 автор: Trianon   (16.01.2009 в 10:53)   письмо автору
 
   для: Alex Boxgorn   (16.01.2009 в 10:05)
 

$z1=$out[1][0];
В php не многомерных массивов. Только одномерные.
Как только Вы это поймете, сразу с массивами станет работать легко.

  Ответить  
 
 автор: Alex Boxgorn   (16.01.2009 в 11:04)   письмо автору
 
   для: Trianon   (16.01.2009 в 10:53)
 

Аааа! Вон оно как!? Ну теперь практически все на свои места встало, а то я ни как не мог понять эти ассоциативные массивы.
Спасибо огромное!!

  Ответить  
 
 автор: Alex Boxgorn   (16.01.2009 в 11:19)   письмо автору
 
   для: Alex Boxgorn   (16.01.2009 в 11:04)
 

Еще последний вопрос по содержимому массива.
Для чего в массиве 2-а значения, а не одно?
Ведь результат функции
preg_match_all("#Телефон(.+?)</td>#",$text,$out);

должен быть "(388) 385-02-62" ?

  Ответить  
 
 автор: Trianon   (16.01.2009 в 11:25)   письмо автору
 
   для: Alex Boxgorn   (16.01.2009 в 11:19)
 

preg_match_all (по умолчанию) возвращает массив, построенный по количеству скобок + 1 . В нулевом элементе - сопоставление со всем шаблоном , в первом - с шаблоном первой скобки, и т.д.

Вы в мануал заглядывали?

  Ответить  
 
 автор: Alex Boxgorn   (16.01.2009 в 11:41)   письмо автору
 
   для: Trianon   (16.01.2009 в 11:25)
 

Хорошего русского мануала у меня к сожалению нет, иначе было бы проще почитать мануал чем народ напрягать.

  Ответить  
 
 автор: Trianon   (16.01.2009 в 11:48)   письмо автору
 
   для: Alex Boxgorn   (16.01.2009 в 11:41)
 

Простите, а почему он у меня есть, а у Вас нет?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования