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

Форум Регулярные Выражения

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

 

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

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

тема: Убрать лишний участок из html кода
 
 автор: pautina   (02.01.2012 в 13:16)   письмо автору
 
 

Здравствуйте Уважаемое сообщество.

<?php  
 $str 
'<P>И вот мой<A href="http://www.psdvault.com/img/2011/08/golden-circle-flatten.jpg"> финальный результат</A>:</P>

<P align=center><IMG height=262 src="/lessons/les1689/01.jpg" width=450></P>

<P>Автор: PSD Vault<BR>Переводчик: Макс Енин<BR><A href="http://www.psdvault.com/abstracts/create-an-abstract-golden-circle-with-smoke-brushset-in-photoshop/">Ссылка на источник</A></P>

<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>

<DIV style="TEXT-ALIGN: center"><IMG height=48 alt="" src="orphus/Oleg_Fadjarov_btn4.gif" width=257></DIV><BR>

<DIV class=Created id=favorite><IMG src="images/ajax-loader.gif"><SPAN>Добавить в закладки (личный кабинет)</SPAN> </DIV>

<DIV class=Created id=sharedButtons style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 5px; PADDING-TOP: 5px">

<SCRIPT src="//yandex.st/share/share.js" type=text/javascript charset=utf-8></SCRIPT>



<DIV class=yashare-auto-init data-yashareType="button" data-yashareQuickServices="vkontakte,moimir,odnoklassniki,facebook,yaru,twitter,friendfeed,lj"></DIV>'
;  
     
/* preg_match_all('|<h1.*?>(.*)</h1>|sei', $str, $matches);       
     регулярное выражение выводит все между символами h1 */ 
     
preg_match_all('<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>'$str$matches); // регулярное выражение для вытаскивания рисунков, выводит все теги <img src="" ... />     
 
echo '<pre>';  
 
print_r($matches[0]); 
?>

Мне нужно вырезать из этой строки всё что идёт после кода
<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>

Как правильно прописать это условие?

  Ответить  
 
 автор: cheops   (02.01.2012 в 13:28)   письмо автору
 
   для: pautina   (02.01.2012 в 13:16)
 

Просто найдите вхождение этой строки при помощи strpos(), у вас в руках будет позиция начала этого абзаца, которую можно передать в качестве второго параметра substr(), тогда у вас в руках останется подстрока, до этой позиции.

  Ответить  
 
 автор: pautina   (02.01.2012 в 16:23)   письмо автору
 
   для: cheops   (02.01.2012 в 13:28)
 

Использовал этот код

 $findme='<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>
';
     $pos = strpos($str, $findme); // определяем позицию $findme в переменной $str
     $newstr = substr($str, 0, $pos+129); // создаём новую строку из str от 0 сивола до символа $pos+129

Спасибо всё работает.

  Ответить  
 
 автор: pautina   (03.01.2012 в 12:52)   письмо автору
 
   для: pautina   (02.01.2012 в 16:23)
 

Чтобы этот код работал для удаления лишнего участка кода в таблице
использовал код (БД bd_photoshop-portal, таблица material_content_into3, поле где содержится контент Field 3)

<?php   
  $conn 
mysql_connect ("localhost""root"""
            or die (
"Соединение не установлено!"); 
  
mysql_select_db("bd_photoshop-portal"$conn); 
  
  
$query "SELECT * FROM material_content_into3";   
  
$cat mysql_query($query);   
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);   
  if(
mysql_num_rows($cat))   
  {   
    while(
$catagory mysql_fetch_assoc($cat)) 
    {    
      
$findme='<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>
'
;
     
$pos strpos('{Field 3}'$findme); // определяем позицию $findme в содержимом поля Field 3
     //$newstr = substr($str, 0, $pos+129); // создаём новую строку из Field 3 от 0 сивола до символа $pos+129
     
$newField_3 substr('{Field 3}'0$pos+129);
       
      
// Запрос для обновления 
      
$query "UPDATE material_content_into3   
                SET `Field 3` = '
{$newField_3}'   
                WHERE ID = 
{$catagory['ID']}";   
      if(!
mysql_query($query))   
      {   
        exit(
"Ошибка выполнения запроса - ".mysql_error()."<br />".$query);   
      } 
      echo 
'Запрос выполнен успешно';   
    }   
  }   
?>

Здесь вроде бы не правильный синтаксис для записи Field 3 в строках

$pos = strpos('{Field 3}', $findme);
$newField_3 = substr('{Field 3}', 0, $pos+129);

Ни проверите?

  Ответить  
 
 автор: pautina   (03.01.2012 в 15:19)   письмо автору
88.3 Кб
 
   для: pautina   (03.01.2012 в 12:52)
 

Взгляните на этот код

<?php   
  $conn 
mysql_connect ("localhost""root"""
            or die (
"Соединение не установлено!"); 
  
mysql_select_db("bd_photoshop-portal"$conn); 
  
  
$query "SELECT * FROM material_content_into3";   
  
$cat mysql_query($query);   
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);   
  if(
mysql_num_rows($cat))   
  {   
    while(
$catagory mysql_fetch_assoc($cat)) 
    {    
      
$findme='<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>';
     
     
$pos strpos($catagory['Field 3'], $findme); // определяем позицию $findme в содержимом поля Field 3
     //$newstr = substr($str, 0, $pos+129); // создаём новую строку из Field 3 от 0 сивола до символа $pos+129
     
$newField_3 substr($catagory['Field 3'], 0$pos+129);
       
      
// Запрос для обновления 
      
$query "UPDATE material_content_into3   
                SET `Field 3` = '
{$newField_3}'   
                WHERE ID = 
{$catagory['ID']}";                             
      if(!
mysql_query($query))   
      {   
        exit(
"Ошибка выполнения запроса - ".mysql_error()."<br />".$query);   
      } 
      echo 
'Запрос выполнен успешно';   
    }   
  }   
?>

Почему здесь строка урезается не с позиции 780 например, это то место где в коде присутствует текст '<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>' а с 0 символа строки,
может дело как то в типе данных Field 3 это longtext.
Файл который создает таблицу material_content_into3 через mysql запрос прикрепил.

  Ответить  
 
 автор: pautina   (03.01.2012 в 17:31)   письмо автору
 
   для: pautina   (03.01.2012 в 15:19)
 

Куда же Вы пропали?
Так хорошо мы с вами обсуждали текущие вопросы, столько вроде тем затронули и закрепили, я участки кода начал дополнять, не посмотрите предидущее сообщение?

  Ответить  
 
 автор: cheops   (03.01.2012 в 18:10)   письмо автору
 
   для: pautina   (03.01.2012 в 17:31)
 

Мне иногда еще и работу делать нужно по студии :) Постараюсь чуть попозже ответить.

  Ответить  
 
 автор: pautina   (04.01.2012 в 09:32)   письмо автору
88.3 Кб
 
   для: cheops   (03.01.2012 в 18:10)
 

Взгляните на этот код
<?php    
  $conn 
mysql_connect ("localhost""root""")  
            or die (
"Соединение не установлено!");  
  
mysql_select_db("bd_photoshop-portal"$conn);  
   
  
$query "SELECT * FROM material_content_into3";    
  
$cat mysql_query($query);    
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);    
  if(
mysql_num_rows($cat))    
  {    
    while(
$catagory mysql_fetch_assoc($cat))  
    {     
      
$findme='<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>'
      
     
$pos strpos($catagory['Field 3'], $findme); // определяем позицию $findme в содержимом поля Field 3 
     //$newstr = substr($str, 0, $pos+129); // создаём новую строку из Field 3 от 0 сивола до символа $pos+129 
     
$newField_3 substr($catagory['Field 3'], 0$pos+129); 
        
      
// Запрос для обновления  
      
$query "UPDATE material_content_into3    
                SET `Field 3` = '
{$newField_3}'    
                WHERE ID = 
{$catagory['ID']}";                              
      if(!
mysql_query($query))    
      {    
        exit(
"Ошибка выполнения запроса - ".mysql_error()."<br />".$query);    
      }  
      echo 
'Запрос выполнен успешно';    
    }    
  }    
?> 

Почему здесь строка урезается не с позиции 780 например, это то место где в коде присутствует текст '<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>' а с 0 символа строки,
может дело как то в типе данных Field 3 это longtext.
Файл который создает таблицу material_content_into3 через mysql запрос прикрепил.

  Ответить  
 
 автор: cheops   (04.01.2012 в 12:12)   письмо автору
 
   для: pautina   (04.01.2012 в 09:32)
 

Зря по такой сложной строке ищите... нельзя упростить искомое выражение? в HTML-коде адрес http://www.photoshop-master.ru где-нибудь еще встречается?

  Ответить  
 
 автор: pautina   (04.01.2012 в 12:55)   письмо автору
 
   для: cheops   (04.01.2012 в 12:12)
 

По более простому выражению
$findme='<P>Данный урок подготовлен для Вас командой сайта';

оно уникально для содержимого каждой ячейки и встречается только 1 раз строка всё равно урезается с 0 символа.

$findme='<P>Данный урок подготовлен для Вас командой сайта';
     
     $pos = strpos($catagory['Field 3'], $findme); // определяем позицию $findme в содержимом поля Field 3
     //$newstr = substr($str, 0, $pos+129); // создаём новую строку из Field 3 от 0 сивола до символа $pos+129
     $newField_3 = substr($catagory['Field 3'], 0, $pos+129);
       
      // Запрос для обновления 
      $query = "UPDATE material_content_into3   
                SET `Field 3` = '{$newField_3}'   
                WHERE ID = {$catagory['ID']}";            

Нужно вывести на печать, чему равна $pos, и понять почему она =0, а не 780 например.

  Ответить  
 
 автор: cheops   (04.01.2012 в 13:07)   письмо автору
 
   для: pautina   (04.01.2012 в 12:55)
 

Выведите сбойный $catagory['Field 3'] в файл (не в браузер, а именно в файл) и прикрепите сюда, там может быть что угодно, нужно ситуацию воспроизводить.

  Ответить  
 
 автор: pautina   (04.01.2012 в 13:34)   письмо автору
88.3 Кб
 
   для: cheops   (04.01.2012 в 13:07)
 

Файл прикрепил. Посмотрите. Все из этого исходника берётся.
Данный файл формирует таблицу из 3 строк, сделайте sql запрос в phpMyAdmin получите исходную таблицу из поля Field 3 которой нужно удалить лишний участок кода.

  Ответить  
 
 автор: cheops   (04.01.2012 в 14:37)   письмо автору
 
   для: pautina   (04.01.2012 в 13:34)
 

У меня ваш скрипт сработал как надо. У вас вообще не обновляется дамп, как выглядит сбой?

  Ответить  
 
 автор: pautina   (04.01.2012 в 14:56)   письмо автору
 
   для: cheops   (04.01.2012 в 14:37)
 

Содержимое ячейки обновляется, контент урезается, но не так как нужно.
Сбой выгледит так урезается строка с 0 символа, а не с символа $pos+129, там по исходному коду видно что контента должно быть больше.
Почему контент так урезается не понятно?

  Ответить  
 
 автор: cheops   (04.01.2012 в 15:19)   письмо автору
 
   для: pautina   (04.01.2012 в 14:56)
 

У вас скрипт в какой кодировке работает и в какой кодировке данные в базе данных?

  Ответить  
 
 автор: pautina   (04.01.2012 в 16:00)   письмо автору
 
   для: cheops   (04.01.2012 в 15:19)
 

Ну наконец то. )
А я то думаю в чем же тут дело?,
почему строка не урезается как надо, и по коду всё правильно, и скриптом регулярного выражения я проверял, строка обрезалась.
В кодировке оказывается дело.
Спасибо Вам огромное.

  Ответить  
Rambler's Top100
вверх

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