Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Удалить запись...
Форумы портала PHP.SU » » XML и его обработка » Удалить запись...

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

1. android - 14 Ноября, 2011 - 15:01:15 - перейти к сообщению
Привет, есть файл test.xml в нем есть данные:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <testimonials>
  4.         <test id="1">
  5.                 <name>test1</name>
  6.                 <content>1</content>
  7.                 <tid>1</tid>
  8.         </test>
  9.         <test id="2">
  10.                 <name>test2</name>
  11.                 <content>2</content>
  12.                 <tid>2</tid>
  13.         </test>
  14. </testimonials>
  15.  


Нужно удалить запись с TID 2 (число может быть разное в зависимости сколько материала в файле)
2. EuGen - 14 Ноября, 2011 - 15:27:54 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. //из-за наличия <? будет ошибка подсветки (поэтому указываю такой комментарий, чтобы подсветка работала)
  2. $sData='<?xml version="1.0" encoding="UTF-8"?>
  3. <testimonials>
  4.        <test id="1">
  5.                <name>test1</name>
  6.                <content>1</content>
  7.                <tid>1</tid>
  8.        </test>
  9.        <test id="2">
  10.                <name>test2</name>
  11.                <content>2</content>
  12.                <tid>2</tid>
  13.        </test>
  14. </testimonials>';
  15.  
  16. $id=2;
  17. $sResult=preg_replace('/\<test\s+id\="'.$id.'">(.*?)\<\/test\>/usmi', '', $sData);
  18. //var_dump($sResult);

Если данные не в UTF, то уберите модификатор u
3. android - 14 Ноября, 2011 - 15:42:29 - перейти к сообщению
EuGen Повторяюсь не с ID а с TID
(Добавление)
Хотя не, сойдет.

Просто добавлю так:

PHP:
скопировать код в буфер обмена
  1. <test id="2" tid="0">
  2.                 <name>test2</name>
  3.                 <content>2</content>
  4.                 <tid>2</tid>
  5. </test>


И еще 2 вопроса:
1) Допишите кода обработки так что бы было
<test id="ЛЮБОЕ ЧИСЛО - НЕ ЗАСЧИТЫВАЕМ В СКРИПТ" tid="РАБОТАЕМ ПО ЭТОМУ ИД">
нужно удалить именно полностью test и его контент искать этот test по TID
2) Как подсчитать все материалы в файле с данным TID?
4. android - 14 Ноября, 2011 - 19:46:07 - перейти к сообщению
2) я решил так:

PHP:
скопировать код в буфер обмена
  1.  
  2.                 $s = 0;
  3.                 foreach($xml->test as $v) {
  4.                         if($v->attributes() == $sid) {
  5.                                 if($v->tid == 1) {
  6.                                         $s++;
  7.                                 }
  8.                         }
  9.                 }
  10.                 echo $s;
  11.  
  12.  


Работает, будет ли нагружать систему цикл??
5. android - 15 Ноября, 2011 - 14:13:39 - перейти к сообщению
парни?

 

Powered by ExBB FM 1.0 RC1