PHP.SU

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

Страниц (55): В начало « ... 47 48 49 50 51 52 53 54 [55]

> Найдено сообщений: 823
grefon Отправлено: 08 Декабря, 2010 - 13:23:58 • Тема: Сложная отчистка строки • Форум: Программирование на PHP

Ответов: 12
Просмотров: 768
В общем не на одном форуме мне никто конкретно не помог и нигде ответа я не нашел. От функции, которую я написал выше, я отказался, потому что у меня текст попадается разного размера для отчистки, и если размер входящей переменной метра 2 и в нем много тегов для фильтрации то памяти уходит немерянно. В результате я придумал еще одно решение, которое меня абсолютно устраивает!!!
Принцип в следующем:
1) берем исходный текст и прогоняем его автозаменой
PHP:
скопировать код в буфер обмена
  1. str_replace("<div>", "{kva}<div>{kva}", $text);
  2. str_replace("</div>", "{kva}</div>{kva}", $text);
  3. str_replace("<p", "{kva}<p", $text);
  4. str_replace("</p>", "</p>{kva}", $text);

2) Разбиваем переменную на массив split("{kva}", $text);
3) в цикле проверяем каждый элемент массива на наличие <div> и <p>, если не находим, то отчищаем элемент массива.
4) собираем массив (implode("", $text)) в новую переменную!

Вот и все! Работаем просто отлично и памяти ест мало.
grefon Отправлено: 07 Декабря, 2010 - 12:19:53 • Тема: Сложная отчистка строки • Форум: Программирование на PHP

Ответов: 12
Просмотров: 768
Принцип я понимаю. А вот реализацию на php как-то не очень. Подскажите, пожалуйста, где можно посмотреть пример?
grefon Отправлено: 07 Декабря, 2010 - 12:07:19 • Тема: Сложная отчистка строки • Форум: Программирование на PHP

Ответов: 12
Просмотров: 768
А можно по-подробнее? А лучше с примером.
grefon Отправлено: 07 Декабря, 2010 - 09:28:01 • Тема: Сложная отчистка строки • Форум: Программирование на PHP

Ответов: 12
Просмотров: 768
В общем поскольку мне никто не ответил и в сети я ничегошеньки не нашел сделал очень некультурно, но зато действенно:

PHP:
скопировать код в буфер обмена
  1. function fromContent() {
  2. global $content, $old_content;
  3. $st1 = "<div>";
  4. $st2 = "</div>";
  5.         preg_match('/<p[^>]*?>.*?<\/p>/m', $old_content, $st_ar);
  6. $st3 = $st_ar[0];
  7. $pos1 = strpos($old_content, $st1);
  8. $pos2 = strpos($old_content, $st2);
  9. if ($st3) $pos3 = strpos($old_content, $st3);
  10. if ($pos1 or $pos2 or $pos3){
  11.         $tt_arr = array($st1 => $pos1, $st2 => $pos2, $st3 => $pos3);
  12.         $ar_pos = array_diff($tt_arr,array(''));
  13.         asort($ar_pos);
  14.         list($stroka, $pos) = each($ar_pos);
  15.         $content .= $stroka;
  16.         $old_content = substr($old_content, $pos + strlen($stroka));                                       
  17.         fromContent();
  18.         }
  19. }      
  20.        
  21. fromContent();


Получается, что я запускаю рекурсивную функцию, которая сама строит переменную $content из переменной $old_content. К сожалению я ничего менее ресурсоемкого не придумал.
grefon Отправлено: 06 Декабря, 2010 - 05:23:05 • Тема: Сложная отчистка строки • Форум: Программирование на PHP

Ответов: 12
Просмотров: 768
Спасибо. То что нужно регулярками я догадался, но вот как записать шаблон чтобы нужные данные сохранялись а не удалялись я не знаю. Если бы я удалял то делал бы так:
PHP:
скопировать код в буфер обмена
  1. preg_replace('#<div>|<\/div>|<p[^>]*?>.*?<\/p>#', "", $text);

А вот как сделать чтобы удалилось все остальное, а то что в шаблоне прописано осталось?
grefon Отправлено: 05 Декабря, 2010 - 10:48:55 • Тема: Сложная отчистка строки • Форум: Программирование на PHP

Ответов: 12
Просмотров: 768
Есть строка:

CODE (html):
скопировать код в буфер обмена
  1. <div><p>sdfgsdfg</p>sdfgsdfg<p>trurytedyh</p><div>dsfghrtgrty<p>er</p>ertyetefg</div><div>dfher<p>ryty</p>rydttrgfd</div>sgsdfgrd</div><p>fdghrethd</p>


Из нее нужно удалить весь текст кроме тегов <div> и </div> и тегов с содержимым <p>какойтотекст</p>. То есть должно остаться что-то типа такого:

CODE (html):
скопировать код в буфер обмена
  1. <div><p>sdfgsdfg</p><p>trurytedyh</p><div><p>er</p></div><div><p>ryty</p></div></div><p>fdghrethd</p>


Как это лучше сделать?
grefon Отправлено: 05 Декабря, 2010 - 08:20:39 • Тема: preg_replace с возрастающей переменной • Форум: Программирование на PHP

Ответов: 3
Просмотров: 395
Ок, понял. Чета я так и думал что так просто не получится, а жаль Недовольство, огорчение

В общем сделал в прямом смысле через жопу, но более элегантное решение искать некогда. Вот что у меня получилось:

PHP:
скопировать код в буфер обмена
  1.  
  2. preg_match_all("/<title(.*)<\/title>/U", $text, $stroki_array); // Собераем все нужные нам теги в массив.
  3.  
  4. // По скольку содержание между тегами title могут быть одинаковыми, а id нам нужны будут разные вставляем допфункцию-обработчик:
  5.  
  6. function podschetchik($i, $stroka) {
  7.         global $text;
  8.         $zamena = '<title id="'.$i.'">'.(preg_replace('/<title(.*?)>/', "", $stroka));
  9.  
  10. // Тут делаем проверку на наличие в тексте тега с таким id
  11.         if (substr_count($text, $zamena)) {
  12.         // Если есть то увеличиваем id и запускаем рекурсивно функцию.
  13.                 $i++;
  14.                 podschetchik($i, $stroka);
  15.         } else {
  16.         // Если нету то меняем в основном тексте данную строку
  17.                 $text = str_replace($stroka, $zamena, $text);
  18.         }
  19. }
  20.  
  21. // А теперь запускаем цикл для массива полученного preg_match_all
  22.  
  23. for ($i=0; $i < count($stroki_array[0]); $i++) {
  24.         podschetchik($i, $stroki_array[0][$i]);
  25. }
  26.  


В принципе то что мне нужно "на сейчас" я получил, но было бы интересно увидить более человеческое решение задачи, так что если кто что придумает - пишите!
grefon Отправлено: 05 Декабря, 2010 - 03:51:35 • Тема: preg_replace с возрастающей переменной • Форум: Программирование на PHP

Ответов: 3
Просмотров: 395
Есть текст вот такого вида:

CODE (html):
скопировать код в буфер обмена
  1. <title>Бла-бла-бла 1</title>
  2. <title id="8">Бла-бла-бла 3 </title>
  3. <title>Бла-бла-бла 2</title>
  4. <title>Бла-бла-бла 4</title>
  5. <title class="title">Бла-бла-бла 5</title>


В некоторых титлах присудствуют атрибуты, а в некоторых нет. Нужно привести его вот в такой вид:

CODE (html):
скопировать код в буфер обмена
  1. <title id="1">Бла-бла-бла 1</title>
  2. <title id="2">Бла-бла-бла 3 </title>
  3. <title id="3">Бла-бла-бла 2</title>
  4. <title id="4">Бла-бла-бла 4</title>
  5. <title id="5">Бла-бла-бла 5</title>


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

Приблизительный код:

PHP:
скопировать код в буфер обмена
  1. preg_replace("!<title(.*?)>!si","<title id=\"$id\">",$text);


Подскажите, как сделать возрастающий id?
grefon Отправлено: 02 Декабря, 2010 - 04:39:44 • Тема: Помогите как сделать • Форум: Напишите за меня, пожалуйста

Ответов: 5
Просмотров: 55
Так а кто Вам мещает на второй стринице вставить код с формой и скрытыми инпутами, в которые повписывать переменные с первой стриницы. Только кнопку, которая ведет на 3 страницу, нужно будет в этой форме. В общем чета типа такого:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form method="post" action="index3.php">
  3.         <input name="Hidden1" type="hidden" value="<?php echo $_POST['pole1']; ?>">
  4.         <input name="Hidden2" type="hidden" value="<?php echo $_POST['pole2']; ?>">
  5.         <input name="Hidden3" type="hidden" value="<?php echo $_POST['pole3']; ?>">
  6.         <input name="Submit1" type="submit" value="Отправить на третью">
  7. </form>
  8.  
grefon Отправлено: 01 Декабря, 2010 - 19:44:03 • Тема: ICQ статус на PHP • Форум: Напишите за меня, пожалуйста

Ответов: 13
Просмотров: 140
ALEN
Ну а на некоторых серверах пхп не установлен Подмигивание
Хотя я с Вами согласен, может и не пойти. Но в принципе для общераспространенных серваков вполне подходит.
grefon Отправлено: 01 Декабря, 2010 - 02:11:32 • Тема: ICQ статус на PHP • Форум: Напишите за меня, пожалуйста

Ответов: 13
Просмотров: 140
Лови! Сделал по быстречку:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4.   $uin = 111111111;
  5.  
  6.   $image1="http://status.icq.com/online.gif?icq=".$uin."&img=4";
  7.   $image2=imagecreatefromgif($image1);
  8.   $showpx=imagecolorat($image2, 45, 12);
  9.  
  10.   if ($showpx==31)
  11.   {
  12.          echo 'Пользователь онлайн';
  13.   }
  14.   elseif ($showpx==43)
  15.   {
  16.          echo 'Скрылся, блин!';
  17.   }
  18.   else
  19.   {
  20.          echo 'Пользователь офлайн';
  21.   }
  22.  
  23. ?>
  24.  
grefon Отправлено: 30 Ноября, 2010 - 18:27:05 • Тема: Найти наиболее часто повторяющиеся выражение • Форум: Программирование на PHP

Ответов: 2
Просмотров: 508
О, сенкс за ответ. Как вариант вполне ДА! Я пока спать не пошел помнил че хочу от этого скрипта, сейчас же поспал и уже не помню (то ли хотел сделать авто-выборку ключевых слов, то ли еще что-то), зато тоже придумал вариант решения задачи:

1) переводим весь текст в нижний регистр - strtolower($text)
2) разбиваем текст в массив по пробелу - split(" ", $text)
3) дальше уваливаем одинаковые элементы массива и элементы состоящие меньше чем из 4 букв.
4) запускаем в цикле проверку каждого элемента на кол-во вхождений - substr_count(), из результатов создаем ассоциативный массив типа ("слово" => 12)
5) дальше сортируем полученый массив по значениям и выводим первые 10, 15 или еще сколько-то значений.

Ну вот воде и все.
Так же как вариант перед подсчетом кол-во вхождений (substr_count()) можно обрезать каждый элемент массива на 2 последние буквы - это для вариаций окончаний. Правда при таком варианте возможны сбои в результатах, так что я этого не делал.
grefon Отправлено: 30 Ноября, 2010 - 05:57:47 • Тема: Найти наиболее часто повторяющиеся выражение • Форум: Программирование на PHP

Ответов: 2
Просмотров: 508
В общем суть вопроса такова: есть небольшой текст (тысяч на 10 символов) в котором нужно найти 10 наиболее часто встречаемых слов начиная с 3 символов (это чтобы откинуть все "и", "в", "на" и тд). Как это сделать даже придумать не могу.

Если бы искать колличество вхождений конкретного слова в текст то тут проблем нет - substr_count(), но тут же нужно сделать обратный эффект.

Кто знает как решить задачку или хотя бы ориентировочно понимает алгоритм функции, пожалуйста, подскажите! Заранее спасибо.

Страниц (55): В начало « ... 47 48 49 50 51 52 53 54 [55]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB