PHP.SU

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

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

> Найдено сообщений: 16
decss Отправлено: 05 Июня, 2010 - 01:45:42 • Тема: Функция обрезки текста. • Форум: Программирование на PHP

Ответов: 2
Просмотров: 306
Уважаемы форумчане, никак не могу разобраться, в чем проблема.
Вот функция, которая обрезает текст до указанной длинны и закрывает все незакрытые теги.

А проблема в том, что если оная вызывается несколько раз (3-4) на странице, то апач зависает, как на локалке так и на хостинге... Закомментил часть с регулярными выражениями - не помогло : (
Нужны будут комментарии - охотно напишу, спасибо!
PHP:
скопировать код в буфер обмена
  1.  
  2. function cropStr($txt, $len = 100, $dots = null){
  3.         $len = intval($len); $txt = trim($txt);
  4.         while ($a<=$len-10) {
  5.                 $t_len = strlen(substr_replace($txt, null, $len+$t_len)) - strlen(strip_tags(substr_replace($txt, null, $len+$t_len)));
  6.                 $a = strlen(strip_tags(substr_replace($txt, null, $len+$t_len)));
  7.         }
  8.         $txt=substr_replace($txt, null, $t_len+$len+7);
  9.         if (strripos($txt, '>') < strripos($txt, '<') AND strripos($txt, '<') - strripos($txt, '>')>=5) {
  10.                 $txt=substr_replace($txt, null, strripos($txt, '<'));
  11.         }
  12.  
  13.         $pos=0; $offset=0;
  14.         if($len>150){$offset = $t_len + $len - 50;}
  15.         elseif($len>50){$offset = $t_len + $len - 30;}
  16.         else{$offset = $t_len + $len;}
  17.         if($pos==0){$pos=@strripos($txt, '. ', $offset);}
  18.         if($pos==0){$pos=@strripos($txt, '.', $offset);}
  19.         if($pos==0){$pos=@strripos($txt, ' ', $offset);}
  20.         if($pos==0){$pos=$t_len + $len;}
  21.         $txt=substr_replace($txt, null, $pos+1);
  22.         $txt=trim($txt);
  23.         $ignore_symb = array(',');
  24.         if (in_array($txt[strlen($txt)-1], $ignore_symb) == TRUE) {$txt = substr_replace($txt, null, strlen($txt)-1);}
  25.  
  26.         $txt .= $dots;
  27.  
  28.         $ignore_tags = array('img', 'br', 'hr');
  29. /**/    if (preg_match_all("/<(\/?)(\w+)/", $txt, $matches, PREG_SET_ORDER)) {
  30.                 $ots = array();
  31.                 foreach ($matches as $k => $tag) {
  32.                         $t_nm = strtolower($tag[2]);
  33.                         if ($tag[1]) {
  34.                                 if (end($ots) == $t_nm) array_pop($ots);
  35.                         } else {
  36.                                 if (!in_array($t_nm, $ignore_tags)) array_push($ots, $t_nm);
  37.                         }
  38.                 };
  39.                 while ($tag = array_pop($ots)) {
  40.                         $txt .= "</$tag>";
  41.                 }
  42.         }/**/
  43.         return $txt;
  44. }
  45.  
decss Отправлено: 17 Июля, 2008 - 01:44:21 • Тема: INSERT переменную • Форум: Программирование на PHP

Ответов: 2
Просмотров: 191
Доброго времени суток, возник такой вопрос:
каким образом можно вставить (используя INSERT) данные в таблицу, при условии что данные - это результат какого-то SELECT'a (к примеру $result)
поля таблицы при селекте и поля таблицы, в которую вставляем данные Одинаковые.

запрос в запросе в моей ситуации не подходит...
спасибо за внимание
decss Отправлено: 08 Июля, 2008 - 03:58:30 • Тема: суть символа "?" и ":" • Форум: Программирование на PHP

Ответов: 2
Просмотров: 266
о! точно) спасибо = )
decss Отправлено: 08 Июля, 2008 - 02:40:03 • Тема: суть символа "?" и ":" • Форум: Программирование на PHP

Ответов: 2
Просмотров: 266
уважаемые умельцы, у меня к вам вопрос.
прошу объяснить или дить ссылу, где разъясняется суть символа "?" и ":", а конкретнее запись:
CODE (text):
скопировать код в буфер обмена
  1. $max=$max<$DATA[0][0]?$DATA[0][1]:$max;

что-то наталкивает меня на мысль о том что ЭТО какое-то сравнение = )
но хочу разобраться до конца) заранее благодарю.
decss Отправлено: 30 Января, 2008 - 21:04:17 • Тема: file_get_contents • Форум: Программирование на PHP

Ответов: 7
Просмотров: 1678
аааа...
CODE (text):
скопировать код в буфер обмена
  1. <?php
  2.         $url="http://www.php.su/forum/topic.php?forum=1&topic=717";
  3.         $data=file_get_contents($url,false,null,2000,1);
  4.         $data = htmlspecialchars($data);
  5.         echo($data);
  6. ?>

вот, к примеру так... 2000 - работает через раз, 5000 - вообще не работает.. 1000 - работает всегда
decss Отправлено: 30 Января, 2008 - 17:53:10 • Тема: file_get_contents • Форум: Программирование на PHP

Ответов: 7
Просмотров: 1678
valenok пишет:
С каким потоком вы работаете?

эмм... Вы не сердитесь, но я не отвечу на Ваш вопрос... потому как не знаю = )
а скрипт прост: состоит из URL на *.php файл, оной функции открытия файла и вывода данных после открытия файла...
decss Отправлено: 30 Января, 2008 - 14:56:05 • Тема: file_get_contents • Форум: Программирование на PHP

Ответов: 7
Просмотров: 1678
Warning: file_get_contents() [function.file-get-contents]: stream does not support seeking in /home/users/b/.../al.php on line 9
Warning: file_get_contents() [function.file-get-contents]: Failed to seek to position 2000 in the stream in /home/users/.../al.php on line 9

вот полностью что пишет
а файл большего размера, в этом я уверен
decss Отправлено: 30 Января, 2008 - 05:07:18 • Тема: Программа для проведения тестов • Форум: Программирование на PHP

Ответов: 13
Просмотров: 964
вот вам программа тестов в одним файле
только запись результатов в базу я не писал... если надо - пишите, помогу.
CODE (text):
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3.   <title></title>
  4. </head>
  5. <body>
  6. <?php
  7. # поля: id; question; answer1; answer2; answer3; answer4; trueAnswerID
  8. # таблица: test
  9. $result = mysql_query("SELECT * FROM `test`");
  10. if($status==1){
  11.         $mark = 0;
  12.         while($row = mysql_fetch_object($result)){
  13.                 $i = $i+1;
  14.                 if($quest[$i]==$row->trueAnswerID){
  15.                         $mark = $mark+1;
  16.                 }
  17.         }
  18. echo("Количество правильных ответов: ".$mark);
  19. }
  20. else{
  21.         while($row = mysql_fetch_object($result)){
  22.         $i = $i+1;
  23.         echo("Вопрос № <b>".$row->id."</b><br>".$row->question."<br>
  24.         Варианты ответов:<br>1) ".$row->answer1."<br>2) ".$row->answer2."<br>3) ".$row->answer3."<br>4) ".$row->answer4."<br>
  25.         <form action=".$_SERVER['PHP_SELF']." method='post'>
  26.         Номер правильного ответа: <select size='1' name='quest[".$i."]'>
  27.           <option value='1'>1</option>
  28.           <option value='2'>2</option>
  29.           <option value='3'>3</option>
  30.           <option value='4'>4</option>
  31.         </select><br><br>");
  32.         }
  33. echo("<input name='status' type='hidden' value='1'>
  34. <input type='submit' value='Проверить ответы'>");
  35. }
  36. ?>
  37. </form>
  38. </body>
  39. </html>
decss Отправлено: 30 Января, 2008 - 03:01:28 • Тема: echo все $переменные • Форум: Программирование на PHP

Ответов: 7
Просмотров: 476
а че за скрипт такой огромный?)
алгаритм эмуляции "большого взрыв" ? оО
decss Отправлено: 30 Января, 2008 - 02:41:59 • Тема: Авторизация • Форум: Программирование на PHP

Ответов: 6
Просмотров: 396
на мой взгляд проблема в том, что в БД парол закодирован...
попробуйте вывести тот пароль, который достается из БД и тот, который хранится в сессии
я бы это сделал так:
CODE (text):
скопировать код в буфер обмена
  1. ...
  2. $nme=mysql_query("SELECT pass=md5 ('$_POST[password]') FROM users WHERE name='$_POST[name]'");
  3.  
  4. while ($row = mysql_fetch_object($nme)) { //циклом за одно проверяем сколько строк достается
  5. echo($row->pass); echo("<br>"); //вместо "pass" вставляем название Вашего поля с паролями
  6. }
  7. echo($_SESSION['password']);
  8. ...
decss Отправлено: 30 Января, 2008 - 02:12:52 • Тема: file_get_contents • Форум: Программирование на PHP

Ответов: 7
Просмотров: 1678
Возник вопрос касательно функции file_get_contents
У с ней связаны следующие параметры:
string filename, bool use_include_path, resource context, int offset и int maxlen
вопрос по последним двум:
int offset - смещение в строке на определенное количество байт
int maxlen - это длинна участка строки (после смещения, если оно указано)
пример:
CODE (text):
скопировать код в буфер обмена
  1. <?php ...
  2. $data = file_get_contents($url,false,null,1000,6000);
  3. echo(htmlspecialchars($data));
  4. ... ?>

открываем, к примеру, php файл (в котором явно больше 10к байтов) и, установив int offset = 2000 строка не обрезается и выдается ошибка: "Failed to seek to position 2000 in the stream in ..."
если же поставить 1000, то все смещается и работает нормально
в чем же дело?
надеюсь на ответ, заранее благодарю.
decss Отправлено: 28 Января, 2008 - 02:42:18 • Тема: Открытие страницы • Форум: Программирование на PHP

Ответов: 9
Просмотров: 703
face_86 пишет:
decss пишет:
уважаемые умельцы, вот уже 2й день безуспешно бьюсь над казалось бы простой проблемой... суть ее такова:

нужен скрипт, который откроет свеб-страницу и занесет ее содержимое в переменную.

вообще в идиале я хочу написать скрипт перебора страниц и поиска в них определенной фразы.

Если пишем поисковик то просто занеси в переменную исходник и удали с неё теги.
ereg_replace(); и вот твоя фраза,, Растерялся я не прав?

как найти - разберусь, тут вопрос в другом : ) не получается занести код страницы (тот, в котором искать) в переменную...
но valenok уже ответил, что что-то с хостом...
(Добавление)
valenok пишет:
decss пишет:
как получить в переменную код страницы


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $url="http://www.php.su/index.php";
  3. $data=file_get_contents($url);
  4. echo(htmlspecialchars($data));
  5. ?>


Почему у вас белая страница спросите у хостера

Да, спасибо большое за ответ... проверил на другом хостенге - все прекрасно открывает.
всех благодарю за помощь, тему можно закрывать
decss Отправлено: 27 Января, 2008 - 02:35:45 • Тема: Открытие страницы • Форум: Программирование на PHP

Ответов: 9
Просмотров: 703
тогда поменяю вопрос:
как получить в переменную код страницы, которая отображается в браузере? ну, соответственно зная ссылку на нее?
надеюсь на ответ : ) спасибо.
decss Отправлено: 25 Января, 2008 - 00:36:20 • Тема: Открытие страницы • Форум: Программирование на PHP

Ответов: 9
Просмотров: 703
T-Mon пишет:
Намекну. Invision Power Board использует...

что результат - это явно, мне не нужен исходный код страницы, да и таким путем я его не получу (если конечно мой скрипт не будет находиться вместе с фалами php.su т.е. на их хостинге), а нужен тот, который видет пользователь, а ссылку форума я взял к примеру... оригенальный сайт другой.
decss Отправлено: 24 Января, 2008 - 14:06:50 • Тема: Открытие страницы • Форум: Программирование на PHP

Ответов: 9
Просмотров: 703
спасибо за ответ, вот что у меня получилось:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $url="http://www.php.su/index.php";
  4. $data=file_get_contents($url);
  5. echo(htmlspecialchars($data));
  6. ?>

при ссылке на файлы внути хостинга все работает на ура, а вот при ссылке, к примеру http://www.php.su/index.php пустая страница : ((
в phpinfo
allow_url_fopen On
что не так?...

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB