Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: fsockopen i eregi...
Forum PHP.pl > Forum > PHP
keedy
mam taki kod php:

  1. <?php
  2.  
  3. $fp=fsockopen('warszawa.irc.pl', 6666);
  4. if (!$fp) {
  5.  
  6.  echo 'Cloudn't connect to irc server!';
  7.  exit;
  8.  
  9. } else {
  10.  
  11.  $out=\"USER kiiiibot kiiiibot kiiiibot kiiiibotrn\";
  12.  $out.=\"NICK kiiiibotrn\";
  13.  $out.=\"JOIN #keedyyrnrn\";
  14.  
  15.  fwrite($fp, $out);
  16.  
  17.  $all_log=fopen('all.log', 'a');
  18.  
  19.  $quest_f='questions.dat';
  20.  $quest_fp=fopen($quest_f, 'r');
  21.  
  22.  $answ_f='answers.dat';
  23.  $answ_fp=fopen($answ_f, 'r');
  24.  
  25.  $log=fopen('messages.log', 'a');
  26.  
  27.  while (!feof($fp)) {
  28.  
  29.  $fg=fread($fp, 128);
  30.  fwrite($all_log, $fg);
  31.  
  32. // chat function
  33.  if(eregi('PRIVMSG', $fg) && !eregi('#keedyy', $fg)) {
  34.  
  35.  $ex=explode(' ', $fg, 4);
  36.  
  37.  $user=substr($ex[0], 1);
  38.  $message=substr($ex[3], 1);
  39.  
  40.  $quest=fread($quest_fp, 1024*10);
  41.  $question=explode('|', $quest);
  42.  
  43.  $answ=fread($answ_fp, 1024*10);
  44.  $answer=explode('|', $answ);
  45.  
  46.  $c=count($question);
  47.  for($i=0; $i<$c; $i++) {
  48.  echo $user.' '.$mess.' '.$question[$i].' '.$answer[$i].&#092;"/n\";
  49.  if(eregi($question[$i], $fg)) {
  50.  $mess='PRIVMSG '. $user.' :'.$answer[$i].&#092;"n\";
  51.  fwrite($fp, $mess);
  52.  }
  53.  #echo $i;
  54.  }
  55.  }
  56.  }
  57.  
  58. }
  59. fclose($all_log);
  60. fclose($fp);
  61.  
  62. ?>


blad jest w tym z for:

teoretycznie dziala. ale php wypluwa bledy z eregi :

Warning: eregi(): REG_EMPTY: in F:\server\www\warsztat\irc\index.php on line 47

a bez eregi to nei zadziala, a tablica w tym for jest poprawnie indeksowana ale eregi cosn ie kuma :/
bendi
Jakto nie kuma przeciez jest wyraznie napisane ze wyrazeine regularne bylo puste...

A tak poza tym polecalbym zrezygnowac z ereg'ow:
1. Sa najwolniejsze z grupy str/preg/ereg.
2. Do sprawdzenia czy w ciagu znakow znajduje sie inny, staly ciag znakow duzo lepiej nadaje sie funkcja strpos.

  1. <?php
  2.  
  3.  // chat function
  4.  if( strpos( $fg, 'PRIVMSG' ) === false && strpos( $fg, '#keedyy' ) === false ) {
  5.  
  6. ?>

Cytat("Manual php")
Ta funkcja może zwrócić logiczne FALSE, ale także zwykłą wartość rozpoznawaną jako FALSE, na przykład 0 lub "". Więcej informacji w rozdziale dotyczącym typów logicznych. Użyj operatora === aby sprawdzić wartość zwracaną przez tę funkcję.
keedy
dzieki uzyje strpos
mimo to moj maly bot nie dziala z tym strpos tak jak zamierzalem....
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.