PHP.SU

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

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

> Найдено сообщений: 11
Tiger Отправлено: 14 Сентября, 2011 - 21:43:08 • Тема: Сокращение записи • Форум: Регулярные выражения

Ответов: 2
Просмотров: 182
Спасибо большое, идем дальше.
PHP:
скопировать код в буфер обмена
  1.         preg_match_all ("/<h1>(.*)<\/h1>/", $content, $title, PREG_PATTERN_ORDER);
  2.         preg_match_all ("/<h2>Регион<\/h2>\n\s+(.*)<br>/", $content, $region, PREG_PATTERN_ORDER);
  3.         preg_match_all ("/<h2>Адрес<\/h2>\n\s+(.*)<br>/", $content, $adress, PREG_PATTERN_ORDER);
  4.         preg_match_all ("/<h2>Телефоны<\/h2>\n\s+(.*)<br>/", $content, $tel, PREG_PATTERN_ORDER);
  5.         preg_match_all ("/<h2>Сайт<\/h2>\n\s+<noindex><a href=\".*\">(.*)<\/a><\/noindex><br>/", $content, $www, PREG_PATTERN_ORDER);
  6.         preg_match_all ("/<h2>Электронная почта<\/h2>\n\s+(.*)<br>/", $content, $email, PREG_PATTERN_ORDER);
  7.         preg_match_all ("/<h2>Руководитель<\/h2>\n\s+(.*)<br>/", $content, $chief, PREG_PATTERN_ORDER);
  8.         preg_match_all ("/<h2>Контактное лицо<\/h2>\n\s+(.*)<br>/", $content, $contact, PREG_PATTERN_ORDER);
  9.         preg_match_all ("/<h2>ИНН<\/h2>\n\s+(.*)<br>/", $content, $inn, PREG_PATTERN_ORDER);
  10.         preg_match_all ("/<h2>Юридическое название<\/h2>\s*(.*\s*.*)\s*<br>/", $content, $legal_name, PREG_PATTERN_ORDER);
  11.         return Array($title['1']['0'], $region['1']['0'], $adress['1']['0'], $tel['1']['0'], $www['1']['0'], $email['1']['0'], $chief['1']['0'], $contact['1']['0'], $inn['1']['0'], $legal_name['1']['0']);


Часть кода парсера
Tiger Отправлено: 14 Сентября, 2011 - 21:37:00 • Тема: Сокращение записи • Форум: Регулярные выражения

Ответов: 2
Просмотров: 182
Добрый день, меня очень волнует вопрос компактности и грамотности кода, поэтому я хочу периодически спрашивать у вас как лучше сократить ту или иную запись, заранее спасибо.
Вот первый вопрос
CODE (htmlphp):
скопировать код в буфер обмена
  1. $pages = GetPages($start_url);
  2. $pages = $pages['1']['0'];
  3. $pages = !(isset($pages)) ? "1" : $pages;


как это максимально сократить и привести к грамотному виду.
Tiger Отправлено: 07 Сентября, 2011 - 09:23:19 • Тема: Скрипт: Праздники Росиии • Форум: Вопросы новичков

Ответов: 4
Просмотров: 258
Да нет, я пробовал, просто "стремно" выкладывать свои наброски, я с самого начала думал брать праздники из базы, а потом появилась сложность с теми праздниками которые идут не по образцу дата и название праздника, а первое воскресенье, второе и т. д. Ну в общем дозавершу свою мысль в скрипте и покажу. Спасибо за подсказки
Tiger Отправлено: 07 Сентября, 2011 - 08:52:41 • Тема: Скрипт: Праздники Росиии • Форум: Вопросы новичков

Ответов: 4
Просмотров: 258
Для новичка есть сложности честно говоря
Tiger Отправлено: 07 Сентября, 2011 - 08:42:45 • Тема: Скрипт: Праздники Росиии • Форум: Вопросы новичков

Ответов: 4
Просмотров: 258
Недавно пришла идея в голову - сделать напоминалку праздников, некий аналог того, что есть на одноклассниках, но столкнулся с следующими проблемами:
Во-первых, самая большая для меня проблема - это определение даты таких праздников которые идут не четко по дате, а допустим первое воскресенье, второе, и т. д.
Во-вторых, на случай, когда на сегодняшний день не существует праздников, то выводить наиболее ближайший.
Подскажите рациональный путь решения этих задач и я постараюсь их осуществить.
Tiger Отправлено: 31 Июля, 2011 - 13:07:47 • Тема: как лучше реализовать • Форум: Вопросы новичков

Ответов: 10
Просмотров: 357
Спасибо уже разобрался
PHP:
скопировать код в буфер обмена
  1. switch ($x){
  2. case 0:
  3.         include( "dbopen.php" );
  4.     ShowTree(0, "AND zip = '".$field."'");
  5.     mysql_close($link);
  6.     break;
  7. case 1:
  8.         include( "dbopen.php" );
  9.     ShowTree(0, "AND title LIKE '".$field."%'");
  10.     mysql_close($link);
  11.     break;
  12. case 2:
  13.         include( "dbopen.php" );
  14.     ShowTree($_GET['id'], NULL);
  15.     mysql_close($link);
  16.     break;
  17. case 3:
  18.         include( "dbopen.php" );
  19.     ShowTree(0, NULL);
  20.     mysql_close($link);
  21.     break;
  22. }


как сократить такую конструкцию?
Tiger Отправлено: 31 Июля, 2011 - 12:21:41 • Тема: как лучше реализовать • Форум: Вопросы новичков

Ответов: 10
Просмотров: 357
Спасибо сделал.
PHP:
скопировать код в буфер обмена
  1. <form method='POST' action='<?=$_SERVER['PHP_SELF']?>'>
  2. Введите улицу или индекс:
  3. <input type='text' name='field'>
  4. <input type='submit' name='button' value='OK'>
  5. </form>
  6.  
  7. <?PHP
  8. $field=trim(mysql_escape_string(substr($_POST['field'],0,49)));
  9.  
  10. if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST && !empty($field))
  11. {
  12.  
  13.         if (is_numeric($field) && strlen($field) == 6)
  14.         {
  15.                 echo("поиск по индексу");
  16.                 include( "dbopen.php" );
  17.                 $p = "zip = '".$field."'";
  18.                 ShowTree(0, $p);
  19.                 mysql_close($link);
  20.         }
  21.         elseif (preg_match("/^[0-9а-яА-Я-\)\(\s]{3}/",$field))
  22.         {
  23.                 echo("поиск по названию");
  24.                 include( "dbopen.php" );
  25.                 $p = "title LIKE '".$field."%'";
  26.                 ShowTree(0, $p);
  27.                 mysql_close($link);
  28.         }
  29.         elseif (strlen($field)<3)
  30.         {
  31.                 echo "Введите минимум 3 символа";
  32.         }
  33.         else
  34.         {
  35.                 echo "Введите корректные данные";
  36.         }
  37. }
  38. else
  39. {
  40.         echo "Введите данные";
  41. }
  42. function ShowTree($ParentID, &$param) {
  43.         global $link;
  44.  
  45.                 $sSQL = "SELECT id, title, zip, pid FROM mail_index WHERE pid = ".$ParentID." AND ".$param." ORDER BY title";
  46.         $result = mysql_query($sSQL, $link);
  47.  
  48.         if (mysql_num_rows($result) > 0) {
  49.                 echo "<UL>\n";
  50.                 while ($row = mysql_fetch_array($result)) {
  51.                         echo "<LI>\n" ;
  52.                         echo $row["title"];
  53.                         echo "\n";
  54.                         if ($row["zip"] != "0"){
  55.                                 echo $row["zip"];
  56.                         }
  57.                         ShowTree($row["id"], $param);
  58.                 }
  59.                 echo "</UL>\n";
  60.         }
  61.  
  62. }
  63. ?>

Я уверен, что этот код я набрал не грамотно, поэтому кто моежт пусть внесет поправки, и оптимизирует код. Заранее спасибо.
Tiger Отправлено: 31 Июля, 2011 - 10:21:39 • Тема: как лучше реализовать • Форум: Вопросы новичков

Ответов: 10
Просмотров: 357
OrmaJever огромное спасибо
Извините забыл 1 момент: title надо $_POST['field'] что то типо $_POST['field']% для удобного поиска по названию улицы потомучто целиком улицу не стоит писать вероятность ошибиться большая.

Кстати хочу спросить ещё - как лучше производить поиск по ключевому слову, в данном случае это название улицы?
Tiger Отправлено: 30 Июля, 2011 - 10:21:03 • Тема: как лучше реализовать • Форум: Вопросы новичков

Ответов: 10
Просмотров: 357
в случае когда надо ввести поиск по индексу должно быть так
PHP:
скопировать код в буфер обмена
  1. $sSQL = "SELECT id, title, zip, pid FROM mail_index WHERE pid = " . $ParentID . " AND zip = " . $_POST['field'] . " ORDER BY title";

а когда по улице
PHP:
скопировать код в буфер обмена
  1. $sSQL = "SELECT id, title, zip, pid FROM mail_index WHERE pid = " . $ParentID . " AND title = " . $_POST['field'] . " ORDER BY title";


вот ума не хватает это реализовать грамотно
Tiger Отправлено: 30 Июля, 2011 - 09:42:07 • Тема: как лучше реализовать • Форум: Вопросы новичков

Ответов: 10
Просмотров: 357
Уважаемые люди, я пока слаб в этом кое-как этот код набрал, пожалуйста в примерах показывайте, я так не пойму...
Tiger Отправлено: 30 Июля, 2011 - 00:22:59 • Тема: как лучше реализовать • Форум: Вопросы новичков

Ответов: 10
Просмотров: 357
Проблема такова я не знаю как лучше сделать чтобы шел поиск по индексу через case или по названию улицы, я частично решил задачу но пока что у меня идет поиск только по индексу, не знаю как грамотно сделать, либо по индексу, либо по улицу.
PHP:
скопировать код в буфер обмена
  1. <form method='POST' action='<?=$_SERVER['PHP_SELF']?>'>
  2. Введите улицу или индекс:
  3. <input type='text' name='field'>
  4. <input type='submit' name='button' value='OK'>
  5. </form>
  6.  
  7. <?PHP
  8. $field=trim(htmlspecialchars(substr($_POST['field'],0,49)));
  9.  
  10.  
  11.  
  12.  
  13. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  14. if (!empty($_POST)) {
  15.  
  16.  
  17. if (!empty($field))
  18. {
  19.  
  20.  
  21.  
  22.  
  23. if (preg_match("/^[0-9]{6}$/",$field))
  24.  {
  25.         $flag=0;
  26.  }
  27.  else
  28.  {
  29.         if (preg_match("/^[0-9а-яА-Я-\)\(\s]{3}/",$field))
  30.         {
  31.                 $flag=1;
  32.         }
  33.         else
  34.         {
  35.                 if (strlen($field)<3)
  36.                 {
  37.                         $flag=2;
  38.                 }
  39.                 else
  40.                 {
  41.                         $flag=3;
  42.                 }
  43.         }
  44. }
  45.  
  46. }
  47. else
  48. {
  49.         $flag=4;
  50. }
  51. }
  52. }
  53. switch ($flag) {
  54. case 0:
  55.     echo("поиск по индексу");
  56.     break;
  57. case 1:
  58.     echo("поиск по названию");
  59.     break;
  60. case 2:
  61.     echo "Введите минимум 3 символа";
  62.     break;
  63. case 3:
  64.     echo "Введите корректные данные";
  65.     break;
  66. case 4:
  67.     echo "Введите данные";
  68.     break;
  69. }
  70.  
  71. include( "dbopen.php" );
  72.         function ShowTree($ParentID, $lvl) {
  73.         global $link;
  74.         global $lvl;
  75.        
  76.         $lvl++;        
  77.         $sSQL = "SELECT id, title, zip, pid FROM mail_index WHERE pid = " . $ParentID . " AND zip = " . $_POST['field'] . " ORDER BY title";
  78.         $result = mysql_query($sSQL, $link);
  79.        
  80.         if (mysql_num_rows($result) > 0) {
  81.                 echo("<UL>\n");
  82.         while ( $row = mysql_fetch_array($result) ) {
  83.                 $ID1 = $row["id"];
  84.                 echo("<LI>\n");
  85.                 echo("<A HREF=\"" . "?ID=" . $ID1 . "\">" . $row["title"] . "</A>" . "&nbsp;&nbsp;\n");
  86.                 if ($row["zip"]!="0"){
  87.                         echo($row["zip"]);
  88.                 }
  89.                 ShowTree($ID1, $lvl);
  90.                 $lvl--;
  91.         }
  92.                 echo("</UL>\n");
  93.         }
  94.        
  95.         }
  96. ShowTree(0, 0);
  97.  
  98. mysql_close($link);
  99.  
  100. ?>

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB