Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
mc_julik
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 9
1

Проблемы с функциями xml

08.10.2012, 17:22. Просмотров 571. Ответов 8
Метки нет (Все метки)

Вот код двух функции которые взаимосвязаны по всему сайту они работают нормально а в коментариях нет не могу понять почему, каким образом можно их переделать
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
public static function render($tbl,&$comment_target, $with_attach=false) {              
        $idtarget = $comment_target['id'];
        $comments = self::get($tbl,$idtarget);      
        ob_start();
        include HOME_DIR.'comments_form.php';
        $comment_form = ob_get_clean();
        if(!$comments->num_rows) return $comment_form; 
        $out = '<h2>'.REGISTRY::localize()->get("Комментарии",'comments').': '.$comments->num_rows.'</h2>
        <div class="commentList">';
        $dom = new DOMDocument; 
        $item = array();
        foreach($comments->rows as $ar) {           
            $item[$ar['id']] = $dom->createElement('DIV');
            $item[$ar['id']]->setAttribute('class','hentry');
            $dom_sxml = dom_import_simplexml(simplexml_load_string(self::render_item($ar)));
            //$dom_i = new DOMDocument;
            //$dom_i->loadXML(self::render_item($ar));
            // in debug mode only
            /*
            if(!$dom_sxml) {
                print '<pre>'.htmlentities(self::render_item($ar)).'</pre>';
                die;
            }
            */
            $item[$ar['id']]->appendChild($dom->importNode($dom_sxml, true));
            //$item[$ar['id']]->appendChild($dom->importNode($dom_i->documentElement,true));
            if(!empty($ar['answer_on_id']) && isset($item[$ar['answer_on_id']])) {
                $item[$ar['answer_on_id']]->appendChild($item[$ar['id']]);
            }
            else {              
                $dom->appendChild($item[$ar['id']]);                
            }   
        }       
        $xhtml = $dom->saveXML();
        $xhtml = preg_replace('#<\?xml[^>]*>\s*#','',$xhtml,1);
        $xhtml = str_replace('
','',$xhtml);
        $out .= $xhtml.'</div><!--.commentList-->'; 
        $out .= $comment_form;
        return $out;
    }
//////////////////////////////////////////////////////////////////////////////////////////////
    private function render_item(&$ar) {
        $owner = (AUTH && $_SESSION['user']['id'] == $ar['users_id']);
                //скрытым (видимым только комментатору и автору публикации)комментариям нельзя выставлять рейтинги в плане репутации
        if($ar['visibility_id'] == 4) $ar['can_i_rate'] = false;    
        $out ='<div id="comment_item'.$ar['users_id'].'" class="comment_holder">
                <div class="fr">'.rating::render($ar['rating'],(!$owner && $ar['can_i_rate']),'comments',$ar['users_id'],$ar['id'])
                        .'</div>'.users::render_link($ar,true,true)
                    .'<div class="pmeta-comment">'.REGISTRY::localize()->date($ar['create_date'])
                        .'</div>';
                    $del_link = '<a id="comment_del_'.$ar['id'].'">'.REGISTRY::localize()->get("удалить",'comments').'</a>';
                    $answer_link = '<a id="comment_answer_'.$ar['id'].'" class="sa gray">'.REGISTRY::localize()->get("ответить",'comments').'</a>';
                    $user_message_link = '<a href="user/messages.htm?to='.$ar['users_id'].'" class="gray">'.REGISTRY::localize()->get("личное сообщение",'comments').'</a>';
                    if(ADMIN) $out .= $del_link; //$user_message_link;
        //elseif(AUTH && !$owner) $linki[] = $user_message_link;            
        //validate txt
                        $txt = preg_replace('/#&(?!amp;)#i/','&amp;',$ar['txt']);       
                        $out .= '<div class="comment-text">'.easy_function::mark_hyperlink($txt);
                            if(!empty($ar['attached_file'])) {
                                $out .= '<br /><br />'.media::audio_player($ar['id'],$ar['attached_file'])
                                .'<a href="'.$ar['attached_file'].'">'.REGISTRY::localize()->get("скачать",'general').'</a>';
                            }
                            if(AUTH) $out .= '<div class="comment-answer">'.$answer_link.'</div>';
                        $out .= '</div> </div>';
        return $out;
    }
Добавлено через 1 минуту
Цитата Сообщение от mc_julik Посмотреть сообщение
PHP
1
$dom_sxml = dom_import_simplexml(simplexml_load_string(self::render_item($ar)));
вот в этой строке и есть ошибка которая указывает на строку
PHP
1
$out ='<div id="comment_item'.$ar['users_id'].'" class="comment_holder">
текст ошибки вот такой
Warning: simplexml_load_string(): Entity: line 4: parser error : AttValue: " or ' expected in /home/garinsites/musichunt.pro/web/class/comments.class.php on line 138 Warning: simplexml_load_string(): div>
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2012, 17:22
Ответы с готовыми решениями:

Проблемы с кодировкой xml
Добрый день Пишу класс для работы с yandex market. Формат данных для...

Как получить путь до конкретного элмента ? | XML | DOM | Simple XML
Добрый день! Как Вы уже знаете, в Simple XML, чтобы получить доступ в XML...

Из двух XML создать один, состоящий из тегов, которые присутствуют в обоих XML
Нужно на PHP реализовать такую задачку. Пример: Есть первый XML: &lt;html&gt; ...

Работа с функциями
Помогите, пожалуйста, разобраться с функцией file_get_contents( string filename...

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

8
alpex
600 / 575 / 103
Регистрация: 16.07.2012
Сообщений: 1,761
09.10.2012, 13:12 2
PHP
1
$out ='<div id="comment_item'.$ar["users_id"].'" class="comment_holder">
0
mc_julik
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 9
10.10.2012, 00:00  [ТС] 3
не поменялось почему то ничего видимо надо будет посвятить выходные парсерам
0
Dolphin
809 / 792 / 201
Регистрация: 21.09.2012
Сообщений: 2,640
10.10.2012, 07:12 4
Опечатка или правда в конце строки ничего нет?

Цитата Сообщение от mc_julik Посмотреть сообщение
$
PHP
1
out ='<div id="comment_item'.$ar['users_id'].'" class="comment_holder">
если это вся строка тогда так
PHP
1
$out ='<div id="comment_item'.$ar['users_id'].'" class="comment_holder">';
0
mc_julik
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 9
10.10.2012, 14:49  [ТС] 5
PHP
1
$out ='<div id="comment_item'.$ar["users_id"].'" class="comment_holder"> <div class="fr">'.rating::render($ar["rating"],(!$owner && $ar["can_i_rate"]),'comments',$ar["users_id"],$ar["id"]).'</div>'.users::render_link($ar,true,true).'<div class="pmeta-comment">'.REGISTRY::localize()->date($ar['create_date']) .'</div>';
вот скрипт строки как одна целая

Добавлено через 13 минут
разбивал на подстроки и всегда упирается в первый div я подумал может сделать так
HTML5
1
2
3
4
<div>
<id> comment_item </id>
<class> comment_holder </class>
</div>
0
mc_julik
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 9
12.10.2012, 13:48  [ТС] 6
что ни у кого нет идей как это исправить?
0
Dolphin
809 / 792 / 201
Регистрация: 21.09.2012
Сообщений: 2,640
12.10.2012, 14:05 7
По моему закрывающегося дива еще одного нет. Может так
PHP
1
2
3
4
5
$out ='<div id="comment_item'.$ar["users_id"].'" class="comment_holder">
          <div class="fr">'.rating::render($ar["rating"],(!$owner && $ar["can_i_rate"]),'comments',$ar["users_id"],$ar["id"]).
          '</div>'.users::render_link($ar,true,true).
          '<div class="pmeta-comment">'.REGISTRY::localize()->date($ar['create_date']) .'</div>
      </div>';
0
mc_julik
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 9
12.10.2012, 18:53  [ТС] 8
Счас поставлю, я вот только что заметил что я его ставил только не там где надо((
и всплыл коментарий один, поигра с дивами не то получается

Нет ничего не поменялось
Warning: simplexml_load_string(): Entity: line 3: parser error : AttValue: " or ' expected in web/class/comments.class.php on line 138 Warning: simplexml_load_string(): div>
sdfasfasdfasdfsafa

Добавлено через 13 минут
Поирал я с дивами и заметил что они в порядке кстати выводят столько сколько надо а вот почему форма коментов не всплывает потом это конешно горе
0
Dolphin
809 / 792 / 201
Регистрация: 21.09.2012
Сообщений: 2,640
12.10.2012, 18:56 9
Либо кавычки перепутаны, лиюо точки с запятой где то нет... Что то типо этого скорее всего
0
12.10.2012, 18:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2012, 18:56

Работа с функциями
Не понимаю почему не работают функции, при в вводе &quot;ИВАНОВ&quot; получаю &quot;ИВАНОВ&quot;, а...

сайт с php функциями
я скачал простой шаблон состоящий из html а мне надо сделать сайт на php. На...

html сайт c php функциями
Ребята помогите! Чем больше читаю тем больше запутываюсь,что к чему Создал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru