Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: вырезание тегов из текста
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » вырезание тегов из текста

Страниц (1): [1]
 

1. rocksmart - 28 Августа, 2008 - 16:51:35 - перейти к сообщению
Есть некий текстовый файл:
<b class='news_title'>"название"</b> <span class='news_date'>27.08.2008</span>
<p class='news_text'>описание<br /><span class='news_author'>Источник: Mobil.ru</span></p><hr class='news_hr'>

<b class='news_title'>"название2"</b> <span class='news_date'>27.08.2008</span>
<p class='news_text'>описание2<br /><span class='news_author'>Источник: Mobil.ru2</span></p><hr class='news_hr'>


нужно вырезать текст между этими тегами:
$title="название"
$date=27.08.2008
$hometext=описание
$avtor=Источник: Mobil.ru
Спасибо
2. pifon1989 - 28 Августа, 2008 - 18:49:54 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $fh = fopen("путь к файлу", "r") or die("Can't open file!");
  4. while(!feof($fh))
  5. {
  6. $value = fgets($fh);
  7. preg_match("/(\"[^<>]*\")/", $value, $t);
  8. preg_match("/([0-9]{2}\.[0-9]{2}\.[0-9]{4})/", $value, $d);
  9. preg_match("/(<p class='news_text'>)[^<>]*(<br)/", $value, $h);
  10. preg_match("/(Источник: )[^<>]*/", $value, $a);
  11. if (!empty($t[0]))
  12. $title[] = $t[0];
  13. if (!empty($d[0]))
  14. $date[] = $d[0];
  15. if (!empty($h[0]))
  16. {
  17. $hst = strip_tags($h[0]);
  18. $hometext[] = $hst;
  19. }
  20. if (!empty($a[0]))
  21. $avtor[] = $a[0];
  22. }
  23. fclose($fh);
  24. var_dump($title);
  25. var_dump($date);
  26. var_dump($hometext);
  27. var_dump($avtor);
  28. ?>
  29.  

Результаты будут записываться в четыре массива, и вам - выдаваться список под каким номером что записалось. Улыбка
3. rocksmart - 31 Августа, 2008 - 19:10:36 - перейти к сообщению
спасибо. Но возникла проблема с записью в базу.
вот скрипт
PHP:
скопировать код в буфер обмена
  1. preg_match_all("#(<b class='news_title'>)(.+?)(</b>)#is",$page,$t);
  2. preg_match_all("#(<p class='news_text'>)(.+?)(<hr class='news_hr'>)#is",$page, $h);
  3. $subject[] = $t[0];
  4. $hometext[] = $h[0];
  5. var_dump($subject);
  6. var_dump($hometext);
  7. $db->sql_query("INSERT INTO ".$prefix."_stories VALUES (NULL, '0', '$aid', '$subject', now(), '$hometext', '$bodytext', '$field', '0', '0', '$topic', '0', '$alanguage', '0', '0', '0', '0', '1')");   
  8.  

где $page сам файл.
как определить что [0]=>=$subject ,[1]=>=$subject и так далее для записи в базу
режет таким образом
CODE (text):
скопировать код в буфер обмена
  1. array(1) {
  2.   [0]=>
  3.   array(10) {
  4.     [0]=>
  5.     string(75) "<b class='news_title'>CBS Sports Mobile пpeдcтaвил мoбильнoe пpилoжeниe</b>"
  6.     [1]=>
  7.     string(64) "<b class='news_title'>Новое решение PTT от компании Motorola</b>"
  8.     [2]=>
  9.     string(87) "<b class='news_title'>"Tитaнoвый" LG Voyager y oпepaтopa Verizon Wireless</b>"
  10.     [3]=>
  11.     string(69) "<b class='news_title'>Samsung представил альтернативу MacBook Air</b>"
  12.     [4]=>
  13.     string(113) "<b class='news_title'>Voxtel Carrera X433 и X353 – пepвыe нaвигaтopы c пoлнoмacштaбным peгиoнaльным пoкpытиeм</b>"
  14.     [5]=>
  15.     string(66) "<b class='news_title'>Взорвавшийся мобильник ранил троих детей</b>"
  16.     [6]=>
  17.     string(110) "<b class='news_title'>Пocтpaдaвшиe пoдpocтки пpиcoeдиняли бaтapeйкy oт мoбильникa к дpyгoмy иcтoчникy тoкa</b>"
  18.     [7]=>
  19.     string(83) "<b class='news_title'>Музыканты стали сочинять мелодии специально для рингтонов</b>"
  20.     [8]=>
  21.     string(63) "<b class='news_title'>Garmin Nuvifone пoявитcя eщe нe cкopo</b>"
  22.     [9]=>
  23.     string(77) "<b class='news_title'>B Япoнии пpeдcтaвлeн двycтopoнний ceнcopный диcплeй</b>"
  24.   }
  25. }
  26. array(1) {
  27.   [0]=>
  28.   array(10) {
  29.     [0]=>
  30.     string(722) "<p class='news_text'>  
  31. Спортивный канал CBS Sports Mobile представил новое мобильное приложение под названием Ultimate Sports Application.
  32. <BR>
  33. С помощью этого приложения пользователи получат возможность знакомиться с обновляемой в режиме реального времени статистикой игроков и счетом игр. Они получат доступ к потоковому видео, заголовкам новостей и другим полезным для болельщика вещам.
  34. <BR>
  35. Пользователи приложения смогут найти своих единомышленников, проводить личные конференции и общаться с болельщиками команд-соперников с помощью доски объявлений.
  36. <BR>
  37. Ultimate Sports Application обойдется пользователям в 4,99 доллара в месяц.
  38. <br /><span class='news_author'>Источник:  helpix.ru</span></p><hr class='news_hr'>"
  39.     [1]=>
  40.     string(751) "<p class='news_text'>
  41. <img src="http://allnokia.ru/news/base/logo/moto-logo.gif" alt="Motorola" align="left" />
  42. Компания Motorola вела работу над изменением технологии Push-to-Talk (возможность мгновенно обмениваться голосовыми сообщениями) и теперь представила свое новое решение, которое будет работать в сетях CDMA EV-DO Rev.A.  
  43.  
  44. Технология Push-to-Talk over Cellular (PoC) обеспечивает функциональность, аналогичную iDEN PTT, позволяет общаться при помощи раций talkie с нажатием кнопки, но основные технологии различны. Представители <b>Motorola</b> заявили, что новое PTT обеспечит низкое время задержки сигнала и значительно улучшит качество сервиса. <br /><span class='news_author'>Источник:  Hello-Moto.ru</span></p><hr class='news_hr'>"
  45.     }
  46. }

извиняюсь за текст после ответа отредактирую.

 

Powered by ExBB FM 1.0 RC1