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

Форум PHP

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

 

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

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

тема: Помогите с написанием кода.
 
 автор: clon   (04.06.2013 в 12:50)   письмо автору
 
 

Вообщем вопрос таков.

У меня есть сайт ,который парсит XML стороннего сайта (API,все лицензионно).

Парсить то парсит ,выдает контент ,который парсит,все здорого .

Но тут передо мной встала проблема ,как сделать так чтобы парсер парсил только те топики ,в которых содержатся слова в my.txt (по словарю)

Заранее спаибо!

Юзаю simple_html_dom

  Ответить  
 
 автор: Sfinks   (04.06.2013 в 13:22)   письмо автору
 
   для: clon   (04.06.2013 в 12:50)
 

Вы бы показали пример спарсенных данных....

Не совсем понятно
> так чтобы парсер парсил только те топики ,в которых содержатся слова в my.txt
Нужно именно не парсить или не выдавать в результате (т.е. спарсить, потом удалить)?

В общем виде можно загрузить содержимое в массив ( функцией file() )
пройтись по результату в цикле, проверить таким образом:
<?php
  $s 
file('my.txt');
  foreach(
$result as $k => $v)
    if( 
strlen($v) == strlenstr_replace$s''$v ) ) )
      unset( 
$result[$k] );

  Ответить  
 
 автор: clon   (04.06.2013 в 14:42)   письмо автору
 
   для: Sfinks   (04.06.2013 в 13:22)
 

<div data-role="page" data-url="/twitter/submit.php" data-external-page="true" tabindex="0" class="ui-page ui-body-c ui-page-active" style="min-height: 452px;">
-----------------------------------NEWS----------------------------------------------------------------
<br>
<h1>Контент:danrock_web: asdasdasdasdasd</h1><br><h1>Создано:Tue, 04 Jun 2013 06:07:47 +0000</h1><br><br>

<hr>

<h1>Контент:danrock_web: asdasodhasjkldkajshd</h1><br><h1>Создано:Tue, 04 Jun 2013 06:07:44 +0000</h1><br><br>

<hr>

<h1>Контент:danrock_web: 12312321312321</h1><br><h1>Создано:Tue, 04 Jun 2013 06:07:40 +0000</h1><br><br>

<hr>

<h1>Контент:danrock_web: testtesttesttesttest</h1><br><h1>Создано:Tue, 04 Jun 2013 06:06:35 +0000</h1><br><br>

<hr>

<h1>Контент:danrock_web: test</h1><br><h1>Создано:Tue, 04 Jun 2013 06:06:21 +0000</h1><br><br>

<hr>

<h1>Контент:danrock_web: olololoo</h1><br><h1>Создано:Tue, 04 Jun 2013 06:06:18 +0000</h1><br><br>

<hr>

<h1>Контент:danrock_web: ldldld</h1><br><h1>Создано:Tue, 04 Jun 2013 06:06:13 +0000</h1><br><br>

<hr>

<h1>Контент:danrock_web: asdasda123123sd</h1><br><h1>Создано:Tue, 04 Jun 2013 06:06:09 +0000</h1><br><br>

<hr>

<h1>Контент:danrock_web: asdasdsadasd</h1><br><h1>Создано:Tue, 04 Jun 2013 06:06:00 +0000</h1><br><br>

<hr>

<h1>Контент:danrock_web: asdsadasdasd</h1><br><h1>Создано:Tue, 04 Jun 2013 06:05:57 +0000</h1><br><br>

<hr>

<h1>Контент:danrock_web: asdasdasd</h1><br><h1>Создано:Tue, 04 Jun 2013 06:05:55 +0000</h1><br><br>

<hr>

<h1>Контент:danrock_web: sdadasdsa</h1><br><h1>Создано:Tue, 04 Jun 2013 05:32:18 +0000</h1><br><br>

<hr>

<h1>Контент:danrock_web: asdkjsakjd</h1><br><h1>Создано:Tue, 04 Jun 2013 05:32:16 +0000</h1><br><br>

<hr>

<h1>Контент:danrock_web: 213213213213</h1><br><h1>Создано:Tue, 04 Jun 2013 05:32:11 +0000</h1><br><br>

<hr>

<h1>Контент:danrock_web: 123213</h1><br><h1>Создано:Tue, 04 Jun 2013 05:32:09 +0000</h1><br><br>

<hr>

<h1>Контент:danrock_web: Hello Edward Numbless ,FSPO ITMO 233 parser for twitter</h1><br><h1>Создано:Tue, 04 Jun 2013 05:20:14 +0000</h1><br><br>

<hr>



</div>


Вот выдача -это парсинг twitter'a у меня проблема с тем что я не могу сделать так чтобы показывало посты ,только с теми словами которые есть в файле my.txt

  Ответить  
 
 автор: DangerBay   (04.06.2013 в 18:17)   письмо автору
 
   для: clon   (04.06.2013 в 14:42)
 

И зачем нам данные, которые выводит скрипт? Ни о чём не говорят.
Исходный код скрипта нужен.
Вкратце так:
<?php
$arr 
file('my.txt'); // получение массива строк из файла
$ct count($arr);
// .........тут вывод записей в цикле
for($i 0$i $ct$i++) // это вложенный цикл должен быть
if(stripos($text$arr[$i]) !== false) {
  
// здесь вывод строки всех данных поста
 
break;
 }
// $text - переменная с текстом поста
?>

Есть вариант использовать регулярные выражения, но не знаю будет ли это быстрей, можно поэкспериментировать. Что-то вроде этого:
<?php
$str 
implode('|'file('my.txt'));
if(
preg_match('/' $str '/i'$text)) ....
?>

  Ответить  
 
 автор: clon   (04.06.2013 в 19:38)   письмо автору
 
   для: DangerBay   (04.06.2013 в 18:17)
 

вот исходник
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
  <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>danrock rss grabber</title>

<link rel="stylesheet" type="text/css" href="styles.css" />


<title>danrock twitter parser</title>

<link rel="stylesheet" href="https://d10ajoocuyu32n.cloudfront.net/mobile/1.3.1/jquery.mobile-1.3.1.min.css">
  <link rel="stylesheet" href="css/style.css">
  
  <!-- Extra Codiqa features -->
  <link rel="stylesheet" href="codiqa.ext.css">
  
  <!-- jQuery and jQuery Mobile -->
  <script src="https://d10ajoocuyu32n.cloudfront.net/jquery-1.9.1.min.js"></script>
  <script src="https://d10ajoocuyu32n.cloudfront.net/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>

  <!-- Extra Codiqa features -->
  <script src="https://d10ajoocuyu32n.cloudfront.net/codiqa.ext.js"></script>

</head>

<body>
<?php
/***header('Content-type: text/html; charset=utf-8');
include_once('simple_html_dom.php');
$html = file_get_html('http://www.unmultimedia.org/radio/russian/');
echo "<table border=10>";


foreach($html->find('div[id=primaryTopSidebar]') as $element) 
      echo $o[1],$element->innertext . '<br>';



echo "</table>";
**/

echo"-----------------------------------NEWS----------------------------------------------------------------\n";
echo
"<br/>";
?>

<?php
include_once('simple_html_dom.php');
header('Content-type: text/html; charset=utf-8');

//https://api.twitter.com/1/statuses/user_timeline.rss?screen_name=danrock_web
//api xml 
//$content = file_get_contents("http://www.un.org/ru/rss/ru_rss_news_un.xml");

 //$x = new SimpleXmlElement($content);

//echo "<table border=10>";


//&#1055;&#1086;&#1080;&#1089;&#1082; &#1074;&#1085;&#1091;&#1090;&#1088;&#1080; &#1092;&#1072;&#1081;&#1083;&#1072; 

 























//foreach ($x->channel->item as $entery)
//{

echo "<tr>";

echo 
"<td>";
$Nazvanie='&#1047;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1086;&#1082;:';
$Opisanie='&#1050;&#1086;&#1085;&#1090;&#1077;&#1085;&#1090;:';
$Poln='&#1055;&#1054;&#1051;&#1053;&#1067;&#1049; &#1058;&#1045;&#1050;&#1057;&#1058;:';
$Sozdanie='&#1057;&#1086;&#1079;&#1076;&#1072;&#1085;&#1086;:';


// &#1057;&#1086;&#1079;&#1076;&#1072;&#1090;&#1100; &#1082;&#1086;&#1085;&#1090;&#1077;&#1082;&#1089;&#1090; &#1080; &#1087;&#1086;&#1083;&#1091;&#1095;&#1080;&#1090;&#1100; XML &#1089; &#1089;&#1072;&#1081;&#1090;&#1072;
$go=($_POST['go']);


$path="https://api.twitter.com/1/statuses/user_timeline.rss?screen_name=".$go;
$ctx stream_context_create(array('http' => array('timeout' => 6)));
$file file_get_contents($path0$ctx);
if (
$file) {
    
// &#1056;&#1072;&#1089;&#1087;&#1072;&#1088;&#1089;&#1080;&#1090;&#1100; &#1087;&#1086;&#1083;&#1091;&#1095;&#1077;&#1085;&#1085;&#1099;&#1081; XML
    
$rss simplexml_load_string($file);

    foreach (
$rss->channel->item as $item){

//echo $Nazvanie,$item->title.'<h1>';
//echo '<h1>'.$Nazvanie,$item->title.'</h3>';    
//    echo "<br>";
        //echo "</td>";        
        //echo "<tr>";
          //echo $Poln,$entery->yandex:full-text;
        //echo "<br>";
        //echo "</td>";        
        //echo "<tr>";

           
  

        
echo '<strong>'.'<h1>'.$Opisanie,$item->description.'</h2>'.'</strong>';
        echo 
"<br>";
        echo 
"</td>";        
        echo 
"<tr>";

                     
                  echo 
'<h5>'.$Sozdanie,$item->pubDate.'</h5>';
        echo 
"<br>";
        echo 
"</td>";        
        echo 
"<tr>";


                     
        
//echo "<iframe src=\"".$item->link."\"></iframe>";

        //echo "<br>";
        




        //echo $item->category;
        //echo "<br>";
        //echo "</td>";        
        //echo "<tr>";




//}
        
//echo "</table>";
        //echo $entery->description;
    ////    echo "</td>";        
        //echo "<tr>";

}
}
        


?>


</body>
</html>
    


мучаюь уже куча времени,была идея загнать спарсенные даных в массив ,потом циклом проверить и вывести результат по условию,но у меня мало опыта с php,поэтому обращаюсь к вам.

  Ответить  
 
 автор: DangerBay   (04.06.2013 в 20:26)   письмо автору
 
   для: clon   (04.06.2013 в 19:38)
 

Тестировал на словаре в 300 слов. Через регулярку в 3 раза быстрей, чем циклом обходить, что неудивительно.
Правда тогда ограничение по количеству слов в словарю. Если словарь большой, то придется использовать вариант с циклом.

<?php
$str 
implode('|'array_map('trim'file('my.txt')));

foreach (
$rss->channel->item as $item){ 

if(
preg_match('/' $str '/i'$item->description)) {

       
// вывод данных...........
        
echo '<strong>'.'<h1>'.$Opisanie,$item->description.'</h2>'.'</strong>';
        echo 
"<br>";
        echo 
"</td>";        
        echo 
"<tr>";

                     
                  echo 
'<h5>'.$Sozdanie,$item->pubDate.'</h5>';
        echo 
"<br>";
        echo 
"</td>";        
        echo 
"<tr>"

}

  Ответить  
 
 автор: clon   (05.06.2013 в 00:02)   письмо автору
 
   для: DangerBay   (04.06.2013 в 20:26)
 

Спасибо ,я уже разобрался,только теперь такой вопрос,как мне выдать ошибку 404 вместо

Warning: preg_match(): Unknown modifier 'c' in /home/u484003877/public_html/twitter/submit.php on line 124

  Ответить  
 
 автор: confirm   (05.06.2013 в 00:57)   письмо автору
 
   для: clon   (05.06.2013 в 00:02)
 

Нормально, вместо того чтобы найти баг в собственном коде (какой-то левый модификатор c), будем выдавать "Страница не найдена"... Как же вы действительно пишите то, вопрос.

  Ответить  
 
 автор: DangerBay   (05.06.2013 в 01:11)   письмо автору
 
   для: clon   (05.06.2013 в 00:02)
 

в вашем файле my.txt слова в каком формате?
Должны быть записаны так:
слово1
слово2
слово3


Есть ли символ
/
?

Эту строчку
if(preg_match('/' . $str . '/i', $item->description)) { 

попробовать заменить на
if(preg_match('@' . $str . '@i', $item->description)) { 

  Ответить  
 
 автор: clon   (05.06.2013 в 01:24)   письмо автору
 
   для: DangerBay   (05.06.2013 в 01:11)
 

if(preg_match('@' . $str . '@i', $item->description)) {
этот код не работает

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

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