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

Форум PHP

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

 

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

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

тема: Не правильно вырезается информацию с другого сайта 2
 
 автор: Бамси   (04.04.2006 в 09:31)   письмо автору
 
 


<? 
$char 
"He Bopyu"
$link "http://www.tibia.com/community/?subtopic=character&name=$char"
$fd fopen($link"r"); 
$text=""
  if (!
$fd) echo "Сервер временно не доступен."
  else 
  { 
    while (!
feof ($fd)) 
    { 
      
$text .= fgets($fd9000); 
    } 
  } 
  
fclose ($fd); 

  
$poslevel strpos($text"Level:"); 
  
$varlevel substr($text$poslevel+153); 
  echo 
$varlevel
  echo 
"<br>"
  
$posworld strpos($text"World:"); 
  
$varworld substr($text$posworld+158); 
  echo 
$varworld;
  echo 
"<br>";
  
$pos strpos($text"Comment:");
  
$var substr($text$pos+178);
  echo 
$var;
?>

Почему это чудо выводит мне
4Berylia<
ta name=
Вместо
35<
Aurea</T
56815490

   
 
 автор: cheops   (04.04.2006 в 12:55)   письмо автору
 
   для: Бамси   (04.04.2006 в 09:31)
 

Пробелы не допустимы в URL, браузер сам их заменяет на %20, а в скрипте придётся URL формировать самостоятельно. Замените строку
$link = "http://www.tibia.com/community/?subtopic=character&name=$char";

на
$link = "http://www.tibia.com/community/?subtopic=character&name=".urlencode($char);

   
 
 автор: Бамси   (04.04.2006 в 20:09)   письмо автору
 
   для: cheops   (04.04.2006 в 12:55)
 

А как мне массив загнать в функцию urlencode?
Пробовал так, и подругому, но ничего не получаеться.
echo "<font size=2>".$worlds[$world_name][$q]." <a target=\"_blank\" href=http://www.tibia.com/community/?subtopic=character&name=".urlencode(.$worlds[$world_name][$q].)">(*)</a></font><br>";
Первый вот массив отображаеться нормально, а тот которые в функии .urlencode пишет ошибку.

И не могли бы заодно обьяснить как Когда надо ставить эти точки ( . ) Я часто замечал что иногда пишут перед функциями а иногда нет, вот хочу спросить когда их нужно ставить и где?

   
 
 автор: Trianon   (04.04.2006 в 20:29)   письмо автору
 
   для: Бамси   (04.04.2006 в 20:09)
 

Точки склеивают друг с другом кусочки строк. Кроме как для этого они не нужны.
Одним из таких кусочков может быть результат вызова функции.
Если значение переменной можно "вклеить" в строку просто написав имя переменной среди строки, то результаты вызова функций так не вклеишь. Приходится для склейки пользоваться точками.
Элемент массива можно вклеить в строку и без точек, но сделать это сложнее, а правильный синтаксис подстановки элемента выглядит неуклюже. Поэтому элементы массива тоже частенько подклеивают к строкам точками.
А теперь исправляйте свой пример :)

   
 
 автор: Бамси   (04.04.2006 в 20:59)   письмо автору
 
   для: Trianon   (04.04.2006 в 20:29)
 

Спасибо :)
echo "<font size=2>".$worlds[$world_name][$q]." <a target=\"_blank\" href=http://www.tibia.com/community/?subtopic=character&name=".urlencode($worlds[$world_name][$q]).">(*)</a></font><br>";

   
 
 автор: Trianon   (04.04.2006 в 21:01)   письмо автору
 
   для: Бамси   (04.04.2006 в 20:59)
 

Можете сравнить Ваш вариант с моим. Они практически не отличаются.
<?
echo ""
 
"<font size=2>"
 
$worlds[$world_name][$q]
 . 
" <a target=\"_blank\" href=http://www.tibia.com/community/?subtopic=character&name="
 
urlencode($worlds[$world_name][$q])
 . 
">(*)</a></font><br>";
?>

   
 
 автор: Бамси   (04.04.2006 в 21:05)   письмо автору
 
   для: Trianon   (04.04.2006 в 21:01)
 

{Хм прикольно, теперь буду точками пользоваться вместо 10 строчек с echo "";

   
 
 автор: Trianon   (04.04.2006 в 21:14)   письмо автору
 
   для: Бамси   (04.04.2006 в 21:05)
 

Вместо десяти строчек уже можно пользоваться html-выводом.
Например вместо

if(....)
{
   echo "<tr>";   
   echo "<td> $pole1 </td>";   
   echo "<td>.... </td>";   
   echo "<td>.... </td>";
   echo "</tr>";   
}
имеет смысл писать

if(....)
{ ?>
   <tr>
     <td> <?= $pole1 ?> </td>
     <td>.... </td>
     <td>.... </td>
   </tr>
<? 
}

   
Rambler's Top100
вверх

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