PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

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

> Найдено сообщений: 34
kismedia Отправлено: 10 Февраля, 2016 - 16:26:05 • Тема: Не могу составить регулярное выражение, не стандартный пример • Форум: Регулярные выражения

Ответов: 5
Просмотров: 561
Мелкий пишет:
Ещё раз - это XML. Не надо извращаться, надо его и читать как XML.
Для обработки XML, наверное, в любом языке есть штатные средства. А то, как в случае с PHP, и не одно средство.

Проще всего использовать simplexml. Прочитали файлик, изменили где нужно атрибуты, записали файлик.


Спасибо, но регуляпку все равно же придется строить?
Мне же не просто убрать тег или изменить, а изменить при условии что....
kismedia Отправлено: 10 Февраля, 2016 - 15:37:21 • Тема: Не могу составить регулярное выражение, не стандартный пример • Форум: Регулярные выражения

Ответов: 5
Просмотров: 561
Мелкий пишет:
Это же XML, при чёт тут регулярки?


Да, но я обрабатываю этот файл регулярками, другого способа не знаю.
Допустим
PHP:
скопировать код в буфер обмена
  1. $file = fopen('yandex_market.php', 'r');
  2. $text = fread($file, filesize('yandex_market.php'));
  3. $text = preg_replace("'<description[^>]*?>.*?</description>'si","",$text);


В примере как бы убрал тег <description>, все норм. И залил опять в в файл.

Подскажите, если я не прав, не силен в PHP.
Как осуществить правильно выше упомянутую задачу замены.

То есть мне нужно выставить атрибут available="true" на весь товар с производителем LEDO

Сам yandex_market.php' формируется Битриксом, покопался в коде, но это не мой уровень, не разберусь.

Поэтому просто решил запускать доп. обработчик на РHP.
Открывать, делать замены и записывать опять в файл.
Как то так.
kismedia Отправлено: 10 Февраля, 2016 - 15:05:43 • Тема: Не могу составить регулярное выражение, не стандартный пример • Форум: Регулярные выражения

Ответов: 5
Просмотров: 561
Добрый день!
Уже ломаю голову несколько часов.

Суть условия:
В строке данных встречаются следующие конструкции
available="false">..произвольный текст, пробелы, вообщем все что угодно Улыбка <vendor>LEDO</vendor>

Необходимо изменить атрибут available="false" на available="true"
но только при условии окончания на <vendor>LEDO</vendor>

Собственно часть содержимого для более наглядного представления:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <offer id="1278" type="vendor.model" available="false">
  2. <url>
  3. http://ledosveshenie.ru/catalog/ofisnoe-svetodiodnoe-osveshchenie/svetodiodnyy-svetilnik-ledo-001-24-2600/?offer_id=1278&utm_source=market.yandex.ru&utm_term=1278
  4. </url>
  5. <price>1538</price>
  6. <currencyId>RUB</currencyId>
  7. <categoryId>70</categoryId>
  8. <picture>
  9. http://ledosveshenie.ru/upload/iblock/ceb/svetodiodnyy_svetilnik_ledo_001_24_2600.jpg
  10. </picture>
  11. <typePrefix>Светильник светодиодный</typePrefix>
  12. <vendor>LEDO</vendor>


Спасибо, если кто поможет.
kismedia Отправлено: 11 Февраля, 2014 - 15:09:49 • Тема: Заключить, обернуть в теги определенную чать переменной • Форум: Регулярные выражения

Ответов: 3
Просмотров: 250
Первое решение от Мелкий к сожалению не сработало.
Ошибки нет, просто не пошла замена.

IllusionMH, Ваше решение выполнило мою задачу.
Все работает!

Спасибо огромное всем за помощь! Улыбка

Не большая поправка:
PHP:
скопировать код в буфер обмена
  1. preg_replace('/(<b>Товары доступные в системе.*?\d\))/i', '<h2>\\1</h2>', $sInput);


А то оборачивает все вхождения "<b>..)"


Здесь наверное все можно было сделать проще? Не понял
PHP:
скопировать код в буфер обмена
  1. $GrabStart = "<!--описание товара-->"; // от куда грабим
  2.     $GrabEnd = "<!--/дополнительная информация-->"; // до куда грабим
  3.     $GrabData = eregi("$GrabStart(.*)$GrabEnd", $data, $DataPrint);
  4.     $data_grab = $DataPrint[1];

Сам сделал, ну как бы все работает. Улыбка
kismedia Отправлено: 11 Февраля, 2014 - 14:27:00 • Тема: Заключить, обернуть в теги определенную чать переменной • Форум: Регулярные выражения

Ответов: 3
Просмотров: 250
Всем привет!
Редко пишу на форум, бывает требуется немного "поковырять" php, справляюсь самостоятельно.
Но с данной задачей справится к сожалению не могу, в регулярных выражениях не силен.
Решений нигде готовых не нашел. Огорчение

Следующая задача:
PHP:
скопировать код в буфер обмена
  1. $data = 'БЛА-БЛА-БЛА....<b>Товары доступные в системе</b>&nbsp;(ЗДЕСЬ ЧИСЛО НЕ ЗНАЕМ КАКОЕ)...БЛА-БЛА-БЛА';


Требуется найти и заключить в теги <h2>...</h2>
Вот эту чать: "<b>Товары доступные в системе</b>&nbsp;(ЗДЕСЬ ЧИСЛО НЕ ЗНАЕМ КАКОЕ)"
То есть от "<b>" и за ")" после числа.

Надеюсь, я корректно объяснил свою проблему.

Если не сложно, подскажите пожалуйста!
kismedia Отправлено: 11 Октября, 2011 - 15:40:14 • Тема: Что означает данная ошибка обработки XML? • Форум: XML и его обработка

Ответов: 0
Просмотров: 2173
Здравствуйте!

Не смогу сам разобраться, да хотя бы знать в каком направлении решать проблему.
На моем сайте со вчерашнего дня пошла ошибка в работе парсера, до этого все работало.

Сможет ли кто-нибудь подсказать что означает данная ошибка и в чем может быть причина:

PHP:
скопировать код в буфер обмена
  1. [11-Oct-2011 13:24:02] PHP Warning:  SimpleXMLElement::__construct() [<a href='simplexmlelement.--construct'>simplexmlelement.--construct</a>]: Entity: line 4: parser error : Specification mandate value for attribute D4B in /home/kismedia/public_html/info-runet.ru/wp-content/themes/katalog/parser/pr.php on line 169
  2. [11-Oct-2011 13:24:02] PHP Warning:  SimpleXMLElement::__construct() [<a href='simplexmlelement.--construct'>simplexmlelement.--construct</a>]: harset>utf-8</charset><properties><_PassagesType>0</_PassagesType><lang>ru</lang in /home/kismedia/public_html/info-runet.ru/wp-content/themes/katalog/parser/pr.php on line 169
  3. [11-Oct-2011 13:24:02] PHP Warning:  SimpleXMLElement::__construct() [<a href='simplexmlelement.--construct'>simplexmlelement.--construct</a>]: ^ in /home/kismedia/public_html/info-runet.ru/wp-content/themes/katalog/parser/pr.php on line 169
  4.  


А вот собственно сама функция обработки XML:

PHP:
скопировать код в буфер обмена
  1. function yan_sear($res_site)
  2. {$res_url_enc=urlencode($res_site);
  3. $xml_qr="<?xml version='1.0' encoding='utf-8'?>
  4. <request>
  5.     <query>url:$res_url_enc*  | url:www.$res_url_enc*</query>
  6.     <page>0</page>
  7. </request>";
  8. global $yandex_key;
  9. $xml_qr=str_replace("\r\n","\n",$xml_qr);
  10. $xml_resp=sv_xml_url($yandex_key,$xml_qr);
  11. $xml_res_strs=explode("\n",$xml_resp);
  12. $xml_res_strs=array_slice($xml_res_strs,3,count($xml_res_strs)-6);
  13. $xml_resp=implode("\n",$xml_res_strs);
  14. $xmldoc = new SimpleXMLElement($xml_resp);
  15. $found_all = $xmldoc->response->found;
  16. $found_all=str_replace(" ","",trim($found_all));
  17. $rs_num=str2num($found_all);
  18. return $rs_num;
  19. }


169 строка это:

PHP:
скопировать код в буфер обмена
  1. $xmldoc = new SimpleXMLElement($xml_resp);


Спасибо, если кто подскажет!
kismedia Отправлено: 24 Августа, 2011 - 10:31:15 • Тема: Требуется помошь по скрипту • Форум: Напишите за меня, пожалуйста

Ответов: 0
Просмотров: 38
Всем привет! Улыбка
Сможет ли кто-нибудь помочь довести до ума скрипт аналог сервиса BNAME.RU
Система раздачи счетчиков тИЦ и PR
А именно, корректно изменить функцию получения значения PR.
Вот установленный скрипт: http://cy-pr[dot]info-runet[dot]ru/
Определение показателя PR уже устарело и функция не актуальна.
Вот ее код:
PHP:
скопировать код в буфер обмена
  1. // Google PR
  2. define('GOOGLE_MAGIC', 0xE6359A60);
  3.  
  4. function nooverflow($a)
  5.   {
  6.   while ($a<-2147483648)
  7.      $a+=2147483648+2147483648;
  8.   while ($a>2147483647)
  9.      $a-=2147483648+2147483648;
  10.   return $a;
  11.   }
  12.  
  13. function zeroFill ($x, $bits)
  14.   {
  15.   if ($bits==0) return $x;
  16.   if ($bits==32) return 0;
  17.   $y = ($x & 0x7FFFFFFF) >> $bits;
  18.   if (0x80000000 & $x)
  19.      {
  20.      $y |= (1<<(31-$bits));
  21.      }
  22.   return $y;
  23. }
  24.  
  25. function mix($a,$b,$c)
  26.   {
  27.   $a=(int)$a; $b=(int)$b; $c=(int)$c;
  28.   $a -= $b; $a -= $c; $a=nooverflow($a); $a ^= (zeroFill($c,13));
  29.   $b -= $c; $b -= $a; $b=nooverflow($b); $b ^= ($a<<8);
  30.   $c -= $a; $c -= $b; $c=nooverflow($c); $c ^= (zeroFill($b,13));
  31.   $a -= $b; $a -= $c; $a=nooverflow($a); $a ^= (zeroFill($c,12));
  32.   $b -= $c; $b -= $a; $b=nooverflow($b); $b ^= ($a<<16);
  33.   $c -= $a; $c -= $b; $c=nooverflow($c); $c ^= (zeroFill($b,5));
  34.   $a -= $b; $a -= $c; $a=nooverflow($a); $a ^= (zeroFill($c,3));
  35.   $b -= $c; $b -= $a; $b=nooverflow($b); $b ^= ($a<<10);
  36.   $c -= $a; $c -= $b; $c=nooverflow($c); $c ^= (zeroFill($b,15));
  37.  
  38.   return array($a,$b,$c);
  39.   }
  40.  
  41. function GoogleCH($url, $length=null, $init=GOOGLE_MAGIC) {
  42. if(is_null($length)) {
  43. $length = sizeof($url);
  44. }
  45. $a = $b = 0x9E3779B9;
  46. $c = $init;
  47. $k = 0;
  48. $len = $length;
  49. while($len >= 12) {
  50. $a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24));
  51. $b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24));
  52. $c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24));
  53. $mix = mix($a,$b,$c);
  54. $a = $mix[0]; $b = $mix[1]; $c = $mix[2];
  55. $k += 12;
  56. $len -= 12;
  57. }
  58.  
  59. $c += $length;
  60. switch($len)
  61. {
  62. case 11: $c+=($url[$k+10]<<24);
  63. case 10: $c+=($url[$k+9]<<16);
  64. case 9 : $c+=($url[$k+8]<<8);
  65. case 8 : $b+=($url[$k+7]<<24);
  66. case 7 : $b+=($url[$k+6]<<16);
  67. case 6 : $b+=($url[$k+5]<<8);
  68. case 5 : $b+=($url[$k+4]);
  69. case 4 : $a+=($url[$k+3]<<24);
  70. case 3 : $a+=($url[$k+2]<<16);
  71. case 2 : $a+=($url[$k+1]<<8);
  72. case 1 : $a+=($url[$k+0]);
  73. }
  74. $mix = mix($a,$b,$c);
  75. return $mix[2];
  76. }
  77.  
  78. function strord($string) {
  79. for($i=0;$i<strlen($string);$i++) {
  80. $result[$i] = ord($string{$i});
  81. }
  82. return $result;
  83. }
  84.  
  85. function get_pr($url) {
  86.  
  87. $result=array("",-1);
  88.  
  89. if (($url.""!="")&&($url.""!="http://")):
  90. if (substr(strtolower($url),0,7)!="http://"):
  91. $url="http://".$url;
  92. endif;
  93.  
  94. $url="info:".$url;
  95. $checksum=GoogleCH(strord($url));
  96. $google_url=sprintf("http://www.google.ru/search?client=navclient-auto&ch=$ch&features=Rank&q=info:".$url,$checksum); // url to
  97. $handle = @fopen($google_url, "rb");
  98. $contents = '';
  99. if ($handle) {
  100. while (!@feof($handle)) {
  101.  $contents.= @fread($handle, 8192);
  102. }
  103. fclose($handle);
  104. $p=explode(":",$contents);
  105. if (isset($p[2])):
  106. $result=trim($p[2]);
  107. endif;
  108. } else {$result = 0;}
  109. endif;
  110.  
  111. return($result!="" && (strlen($result)>0 && (strlen($result)<3))?$result:"0");
  112.  
  113. return($result!="" && (strlen($result)>0 && (strlen($result)<3))?$result:"0");
  114.  
  115. }
  116.  
  117.  
  118. function cleanInput($string)
  119. {
  120.         $string = str_replace("<script","",$string);
  121.         $string = str_replace("<frame","",$string);
  122.         $string = str_replace("<object","",$string);
  123.         $string = str_replace("<iframe","",$string);
  124.         $string = str_replace("<applet","",$string);
  125.         $string = str_replace("<meta","",$string);
  126.         $string = str_replace("\|","",$string);
  127.         $string = str_replace("\'","",$string);
  128.         $string = str_replace("|","",$string);
  129.         $string = str_replace("'","",$string);
  130.         $string = stripslashes(strip_tags($string));
  131.         if (strcmp("http://",substr($string,0,7))==0)
  132.         {$string=substr($string,7,strlen($string)-7);}
  133.         if (strcmp("https://",substr($string,0,8))==0)
  134.         {$string=substr($string,8,strlen($string)-8);}
  135.         $string = preg_replace("/\/(.*)/","",$string);
  136.  
  137.         return $string;
  138. }
  139.  
  140. function getSqlRow($query) {
  141.         $result = mysql_query($query) or echoErr();
  142.         $row = mysql_fetch_array($result);
  143.         mysql_free_result($result);
  144.         return $row;
  145. }
  146.  
  147. function getSqlNumber($sqlQuery) {
  148.         $query=@mysql_query($sqlQuery);
  149.         $result=@mysql_num_rows($query);
  150.         @mysql_free_result($query);
  151.         return $result;
  152. }
  153.  
  154. function getFullDate($date) {
  155.         $date = date('l dS of F Y h:i:s A', $date);
  156.         return $date;
  157. }
  158.  
  159. function getMinDate($date) {
  160.         $date = date('d.m.Y', $date);
  161.         return $date;
  162. }
  163.  


Есть рабочий скрипт получения показателя PR
Вот он:
PHP:
скопировать код в буфер обмена
  1. $googlehost='toolbarqueries.google.com';
  2. $googleua='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5';
  3.  
  4. //convert a string to a 32-bit integer
  5. function StrToNum($Str, $Check, $Magic) {
  6.     $Int32Unit = 4294967296;  // 2^32
  7.  
  8.     $length = strlen($Str);
  9.     for ($i = 0; $i < $length; $i++) {
  10.         $Check *= $Magic;      
  11.         //If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31),
  12.         //  the result of converting to integer is undefined
  13.         //  refer to http://www.php.net/manual/en/language.types.integer.php
  14.         if ($Check >= $Int32Unit) {
  15.             $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
  16.             //if the check less than -2^31
  17.             $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
  18.         }
  19.         $Check += ord($Str{$i});
  20.     }
  21.     return $Check;
  22. }
  23.  
  24. //genearate a hash for a url
  25. function HashURL($String) {
  26.     $Check1 = StrToNum($String, 0x1505, 0x21);
  27.     $Check2 = StrToNum($String, 0, 0x1003F);
  28.  
  29.     $Check1 >>= 2;      
  30.     $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
  31.     $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
  32.     $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);
  33.        
  34.     $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
  35.     $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );
  36.        
  37.     return ($T1 | $T2);
  38. }
  39.  
  40. //genearate a checksum for the hash string
  41. function CheckHash($Hashnum) {
  42.     $CheckByte = 0;
  43.     $Flag = 0;
  44.  
  45.     $HashStr = sprintf('%u', $Hashnum) ;
  46.     $length = strlen($HashStr);
  47.        
  48.     for ($i = $length - 1;  $i >= 0;  $i --) {
  49.         $Re = $HashStr{$i};
  50.         if (1 === ($Flag % 2)) {              
  51.             $Re += $Re;    
  52.             $Re = (int)($Re / 10) + ($Re % 10);
  53.         }
  54.         $CheckByte += $Re;
  55.         $Flag ++;      
  56.     }
  57.  
  58.     $CheckByte %= 10;
  59.     if (0 !== $CheckByte) {
  60.         $CheckByte = 10 - $CheckByte;
  61.         if (1 === ($Flag % 2) ) {
  62.             if (1 === ($CheckByte % 2)) {
  63.                 $CheckByte += 9;
  64.             }
  65.             $CheckByte >>= 1;
  66.         }
  67.     }
  68.  
  69.     return '7'.$CheckByte.$HashStr;
  70. }
  71.  
  72. //return the pagerank checksum hash
  73. function getch($url) { return CheckHash(HashURL($url)); }
  74.  
  75. //return the pagerank figure
  76. function getpr($url) {
  77.         global $googlehost,$googleua;
  78.         $ch = getch($url);
  79.         $fp = fsockopen($googlehost, 80, $errno, $errstr, 30);
  80.         if ($fp) {
  81.            $out = "GET /search?client=navclient-auto&ch=$ch&features=Rank&q=info:$url HTTP/1.1\r\n";
  82.            //echo "<pre>$out</pre>\n"; //debug only
  83.            $out .= "User-Agent: $googleua\r\n";
  84.            $out .= "Host: $googlehost\r\n";
  85.            $out .= "Connection: Close\r\n\r\n";
  86.        
  87.            fwrite($fp, $out);
  88.            
  89.            //$pagerank = substr(fgets($fp, 128), 4); //debug only
  90.            //echo $pagerank; //debug only
  91.            while (!feof($fp)) {
  92.                         $data = fgets($fp, 128);
  93.                         //echo $data;
  94.                         $pos = strpos($data, "Rank_");
  95.                         if($pos === false){} else{
  96.                                 $pr=substr($data, $pos + 9);
  97.                                 $pr=trim($pr);
  98.                                 $pr=str_replace("\n",'',$pr);
  99.                                 return $pr;
  100.                         }
  101.            }
  102.            //else { echo "$errstr ($errno)<br />\n"; } //debug only
  103.            fclose($fp);
  104.         }
  105. }
  106.  
  107. //generate the graphical pagerank
  108. function pagerank($url,$width=40,$method='style') {
  109.         if (!preg_match('/^(http:\/\/)?([^\/]+)/i', $url)) { $url='http://'.$url; }
  110.         $pr=getpr($url);
  111.         $pagerank="$pr/10";
  112.  
  113.         //The (old) image method
  114.         if ($method == 'image') {
  115.         $prpos=$width*$pr/10;
  116.         $prneg=$width-$prpos;
  117.         $html='<img src="http://www.google.com/images/pos.gif" width='.$prpos.' height=4 border=0 alt="'.$pagerank.'"><img src="http://www.google.com/images/neg.gif" width='.$prneg.' height=4 border=0 alt="'.$pagerank.'">';
  118.         }
  119.         //The pre-styled method
  120.         if ($method == 'style') {
  121.         $prpercent=100*$pr/10;
  122.         $html='<div style="position: relative; width: '.$width.'px; padding: 0; background: #D9D9D9;"><strong style="width: '.$prpercent.'%; display: block; position: relative; background: #5EAA5E; text-align: center; color: #333; height: 4px; line-height: 4px;"><span></span></strong></div>';
  123.         }
  124.        
  125.         $out='<a href="'.$url.'" title="'.$pagerank.'">'.$html.'</a>';
  126.         return $pagerank;
  127. }


Сможет ли кто помочь, проверить в чем ошибки в первом варианте, изменить функцию на основании второго рабочего скрипта.

Спасибо за помощь!
kismedia Отправлено: 04 Июля, 2011 - 15:54:54 • Тема: Написать скрипт сбора внешних ссылок и их проверки • Форум: Напишите за меня, пожалуйста

Ответов: 0
Просмотров: 33
Всем привет! Улыбка

Требуется написать скрипт который выполняет следующие задачи:

1. При запуске анализирует заданный, скажем в переменной $url, сайт на предмет всех внешних ссылок, без ограничений по уровню вложенности, то есть все что есть.
Либо можно давать ему просто уже готовый sitemap.xml и тогда ограничится 1-ым уровнем (так думаю будет быстрее).

2. Теперь по всем этим внешним ссылкам необходимо перейти заданное количество раз и обязательно с заданным в скрипте рефералом (по-сути это текущий сайт со скриптом).
То есть в учете статистики трафика собранных сайтов (внешних ссылок) должен отобразится наш переход.

Вот собственно и все.
Надеюсь, что я правильно объяснил задачу. Думаю, она не очень сложная, но таких готовых, подобных решений я не нашел.

Спасибо за помощь!
kismedia Отправлено: 13 Мая, 2011 - 06:41:41 • Тема: Удаление непонятных символов, неподдерживаемых текущей кодировкой • Форум: Регулярные выражения

Ответов: 3
Просмотров: 595
Текущая кодировка сайта UTF-8 а в переменной присутствует символ не поддерживаемый текущей кодировкой, вывести его нельзя, отображается это " � ".
Как я понимаю, искать нужно не " � " в буквальном смысле, это уже как следствие, а символы, код, которые отсутствуют в UTF.

Можно ли срезать через chr() некий диапазон символов, допустим удалить все кроме кода кирилицы? Как то вот так получается, надеюсь, я правильно понимаю сам проблему.
kismedia Отправлено: 12 Мая, 2011 - 21:59:06 • Тема: Удаление непонятных символов, неподдерживаемых текущей кодировкой • Форум: Регулярные выражения

Ответов: 3
Просмотров: 595
Всем Привет! Улыбка

Не знаю как правильно выразиться, но вообщем, есть переменная $content
Содержимое, допустим такое: "выстраиваются в квадрат 5�5"

Вопрос, как убрать вот этот "" не определенный символ, то есть символы которые не опознаны, не поддерживаются текущей кодировкой, как я понимаю.
Существует ли возможность такой проверки содержимого строки?
Убрать как бы все не валидные символы.

Надеюсь, Вы меня поняли.
Инормации по данному вопросу не нашел, да и собственно, что искать, как описать данную проблему.

Спасибо за помощь!
kismedia Отправлено: 11 Мая, 2011 - 15:02:51 • Тема: Удаление всего содержимого, любых символов после искомого • Форум: Регулярные выражения

Ответов: 2
Просмотров: 197
Всем привет! Улыбка

Собственно задача, сама по себе звучит просто:
Пропустить содержимое через регулярку, в которой будет удалятся все (символы, цифры) повторяющиеся сколько угодно раз или не встречающиеся вообще, вообщем, любая комбинация, но после заданного слова, ключа.
Допустим все после фразы "Читать далее", желательно даже включая эту фразу.

Нигде не могу найти подобного, как реализовать? Огорчение

Подскажите пожалуйста!
kismedia Отправлено: 17 Января, 2011 - 17:07:42 • Тема: Кэширование данных в .TXT файл (запись и вывод) • Форум: Программирование на PHP

Ответов: 3
Просмотров: 433
Спасибо, суть понял но нужно этот файл обработать соответствующим образом, найти в нем требуемое значение ,если оно уже имеется.

Давайте так, сколько будет стоить данное дополнение (функция) к моему парсеру?
Кто может помочь, написать.
kismedia Отправлено: 17 Января, 2011 - 16:01:07 • Тема: Кэширование данных в .TXT файл (запись и вывод) • Форум: Программирование на PHP

Ответов: 3
Просмотров: 433
Всем здравствуйте! Улыбка

Знаю что можно хранить (получать) данные как в БД так и в в файлах, допустим в .TXT.

Опишу на своем примере и зачем это нужно мне.
Недавно в данной теме http://forum.php.su/topic.php?fo...1&topic=5966 я, не без помощи пользователей форума, написал следующую функцию:

PHP:
скопировать код в буфер обмена
  1. function parstitle ($urlsape){
  2.  
  3. if($html_content = @file_get_contents('http://' .$urlsape. '')){
  4. preg_match_all( "|<title>(.*)</title>|sUSi", $html_content, $titles);
  5. $titles = $titles[1][0];
  6. if (mb_check_encoding($titles, 'Windows-1251') && !mb_check_encoding($titles, 'UTF-8')){
  7. $titles = mb_convert_encoding($titles, 'UTF-8', 'Windows-1251');
  8. }
  9. if ($titles = "301 Moved Permanently") {
  10. $html_content = @file_get_contents('http://www.' .$urlsape. '');
  11. preg_match_all( "|<title>(.*)</title>|sUSi", $html_content, $titles);
  12. $titles = $titles[1][0];
  13. if (mb_check_encoding($titles, 'Windows-1251') && !mb_check_encoding($titles, 'UTF-8')){
  14. $titles = mb_convert_encoding($titles, 'UTF-8', 'Windows-1251');
  15. }
  16. }
  17. echo $titles;
  18. }else echo "Данные не доступны";
  19. }


Что делаем, парсим содержимое тега <TITLE> заданной страницы $urlsape и выводим результат в правильной (соответствующей сайту) кодировке из переменной $titles.

Вот, собственно и задача:
Как дописать, реализовать кэширование переменной $titles учитывая значение $urlsape в некий текстовый файл, допустим построчно, и потом вытягивать это значение по условию наличия и соответственно выводить результат. Тем самым сократив количество постоянных обращений и бессмысленного повторного парсинга сайтов.

Вижу это так:

Переменная $titles в конце имеет некий результат, заголовок страницы сайта с адресом $urlsape

Необходимо организовать хранилище в файле с расширением .txt следующей структуры:
$urlsape - $titles
$urlsape - $titles
$urlsape - $titles

.......

Проверяем переменную $urlsape, если ее содержимое уже имеется в файле, скажем Cache.txt, то забираем ее значение $titles, и соответсвенно выводим.
Если такой записи нет, то парсим согласно выше приведенному коду и результат записываем в файл Cache.txt. После чего ее тоже выводим.

Насколько трудоемко дописать данный модуль кеширования и какие функции для этого использовать?

Время жизни кэша не имеет значения, данные не обновляются.

Спасибо!
kismedia Отправлено: 16 Января, 2011 - 20:55:08 • Тема: Проверка кодировки содержимого заданной переменной или удаленного HTML документа • Форум: Программирование на PHP

Ответов: 5
Просмотров: 1152
Вообщем, нашел решение самостоятельно, использую в связке mb_check_encoding и mb_convert_encoding.

PHP:
скопировать код в буфер обмена
  1. if (mb_check_encoding($titles, 'Windows-1251') && !mb_check_encoding($titles, 'UTF-8')){
  2. $titles = mb_convert_encoding($titles, 'UTF-8', 'Windows-1251');
  3. }


Ну и весь код функции с выше приведенным условием:

PHP:
скопировать код в буфер обмена
  1. function parstitle ($urlsape){
  2.  
  3. if($html_content = @file_get_contents('http://' .$urlsape. '')){
  4. preg_match_all( "|<title>(.*)</title>|sUSi", $html_content, $titles);
  5. $titles = $titles[1][0];
  6. if (mb_check_encoding($titles, 'Windows-1251') && !mb_check_encoding($titles, 'UTF-8')){
  7. $titles = mb_convert_encoding($titles, 'UTF-8', 'Windows-1251');
  8. }
  9. echo $titles;
  10. }else echo "Данные не доступны";
  11. }


Парсим содержимое тега <TITLE> заданной страницы $urlsape и выводим результат в правильной (соответствующей сайту) кодировке.

Всем спасибо за помощь! Улыбка
kismedia Отправлено: 15 Января, 2011 - 21:19:15 • Тема: Проверка кодировки содержимого заданной переменной или удаленного HTML документа • Форум: Программирование на PHP

Ответов: 5
Просмотров: 1152
Всем здравствуйте! Улыбка

написал вот я, такую небольшую функцию:

PHP:
скопировать код в буфер обмена
  1. function parstitle ($urlsape){
  2.  
  3. if($html_content = @file_get_contents($urlsape)){
  4. preg_match_all( "|<title>(.*)</title>|sUSi", $html_content, $titles);
  5. $titles = $titles[1][0];
  6. echo $titles;
  7. }else echo "Данные не доступны";
  8. }
  9.  


Что делаем, да, собственно, просто парсим содержимое тега <TITLE> по адресу $urlsape. Все как бы работает, проблема только с кодировкой.
Если страница по заданному адресу в "cp1251" , то получаем на выходе "квадратики" (у меня на сайте "utf-8").

Можно сделать так:

PHP:
скопировать код в буфер обмена
  1. $titles=iconv("cp1251", "utf-8", $titles);


Но а если страница и так уже в "utf-8"?

Вообщем, как проверить кодировку либо всей страницы , либо содержимого переменной $titles и уже в зависимости от этого сделать выше приведенную операцию?

Может есть способ по-проще? Спасибо!

Страниц (3): [1] 2 3 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB