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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Object of class DOMElement could not be converted to string in

 PHP.SU

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


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

> Без описания
strengerst
Отправлено: 17 Мая, 2019 - 15:56:41
Post Id


Частый гость


Покинул форум
Сообщений всего: 172
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Всем привет вот возникает такая проблема. Как можно элемент DOM сделать текстовым. Иначе у меня не кушает
второй параметр пишет должен быть только текст.

PHP:
скопировать код в буфер обмена
  1.  
  2. $url="...";
  3. $content=file_get_contents($url);
  4. $php_query=phpQuery::newDocument($content);
  5.  
  6.  
  7.  
  8. foreach ($php_query->find('.swf-img') as $data) {
  9. $data=pq($data);
  10. $data[]=$data->html();
  11. }
  12.  
  13. //Пытаемся преобразовать в строку массив на этом этапе возникает ошибка
  14. //Recoverable fatal error: Object of class DOMElement could not be converted to string in
  15. foreach ($data as $texts){
  16.     $strin="".$texts;
  17. }
  18. $re = '/background-image: url\(\/\/www.*?.jp/m';
  19.  
  20.  
  21. preg_match_all($re, $strin,$matches, PREG_SET_ORDER, 0);
  22.  
  23.  
  24. // Print the entire match result
  25. var_dump($matches);
  26.  
  27.  
 
 Top
Строитель Модератор
Отправлено: 17 Мая, 2019 - 16:12:39
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




strengerst, а как будут выглядеть данные в переменной $texts, если её распечатать в теле цикла функцией var_dump($texts); ?
 
 Top
LIME
Отправлено: 17 Мая, 2019 - 17:27:06
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




?
(Добавление)
Строитель phpQuery это интерфейс jQuery на php
(Добавление)
strengerst тут проще сразу по селектору background-image запросить
(Добавление)
https://code[dot]google[dot]com/archive/[dot][dot][dot]s/Selectors[dot]wiki
 
 Top
strengerst
Отправлено: 17 Мая, 2019 - 17:55:46
Post Id


Частый гость


Покинул форум
Сообщений всего: 172
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




(Добавление)
strengerst тут проще сразу по селектору background-image запросить
Я понимая но по background-image у меня не находит там хитро сделанный код. А вот по регулярному выражению получить получалось.

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <div itemprop="image" class="swf-img galleryscodei544243" style="background: url(//www.../chery_tiggo_3_164.jpeg) no-repeat center center;">
  3.                                 </div>

Может у вас лучше получится я делал так:
PHP:
скопировать код в буфер обмена
  1. $url="...";
  2. $content=file_get_contents($url);
  3. $php_query=phpQuery::newDocument($content);
  4.  
  5. foreach ($php_query->find('.swf-img') as $data) {
  6.     $data=pq($data);
  7.     $resault[]=$data->attr("background");
  8. }
  9. var_dump($resault);


$resault - в итоге массив равен 0;

(Отредактировано автором: 17 Мая, 2019 - 18:01:03)

 
 Top
LIME
Отправлено: 17 Мая, 2019 - 17:59:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




PHP:
скопировать код в буфер обмена
  1.         foreach ($php_query->find('.swf-img') as $data) {
  2.             $data[]=pq($data)->attr('style');
  3.         }

(Отредактировано автором: 17 Мая, 2019 - 18:00:13)

 
 Top
strengerst
Отправлено: 17 Мая, 2019 - 18:50:37
Post Id


Частый гость


Покинул форум
Сообщений всего: 172
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




LIME пишет:
PHP:
скопировать код в буфер обмена
  1.         foreach ($php_query->find('.swf-img') as $data) {
  2.             $data[]=pq($data)->attr('style');
  3.         }


Не получается :
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach ($php_query->find('.swf-img') as $data) {
  3.     $data=pq($data);
  4.         $data[]=$data->attr('style');
  5. }
  6. var_dump($data);
  7.  

var_dump - выводит кучу всего и нечего толком.
Прикреплено изображение (Нажмите для увеличения)
123.png

(Отредактировано автором: 17 Мая, 2019 - 19:41:37)

 
 Top
strengerst
Отправлено: 18 Мая, 2019 - 10:18:18
Post Id


Частый гость


Покинул форум
Сообщений всего: 172
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Если весь найденные код с phpQuery скопировать в программу с регулярными выражениями то получается подобрать выражение так что находит нужный участок код. Но вот вопрос, как преобразовать весь этот код переменной в строковый чтобы можно было задействовать регулярное выражение в моем коде Не понял
 
 Top
Строитель Модератор
Отправлено: 18 Мая, 2019 - 10:27:18
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




strengerst пишет:
var_dump - выводит кучу всего и нечего толком
Дак перед дампом пропишите тег форматирования: echo '<pre>'; var_dump($texts);

Посмотрите на полученную структуру, и станет понятнее.
 
 Top
LIME
Отправлено: 18 Мая, 2019 - 13:56:00
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель к сожалению надо знать половину ответа
Понятнее не станет
Я не знаю рецепта как его научить пользоваться объектами
(Добавление)
Он еще и с 10го года
Пичаль
 
 Top
Строитель Модератор
Отправлено: 18 Мая, 2019 - 14:07:52
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




LIME, я просто с телефона, и не могу полноценно проанализировать вопрос.
Если я правильно понял суть, тс-у нужно преобразовать объект в строку для последующей передачи этой строки в preg_match() ?

И если да, то можно же создать класс, наследующий получаемый из phpQuery() тип объекта, и в этом дочернем классе реализовать метод __toString() ?
 
 Top
LIME
Отправлено: 18 Мая, 2019 - 14:22:44
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель пишет:
то можно же создать класс, наследующий получаемый
для справки
на моей текущей работе
где от синьоров яблоку негде упасть(других просто не берут)
слово extend считается ругательным
аккуратнее с наследованием
предпочитай композицию/агрегацию или ассоциацию на худой конец
хотя это возможно слишком для вас пока
по сабжу
тс не смог пользоваться доками и понять что есть объект результата
за ручку водить не буду
удалился из треда
 
 Top
strengerst
Отправлено: 19 Мая, 2019 - 10:18:12
Post Id


Частый гость


Покинул форум
Сообщений всего: 172
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Ну что ту непонятного, результатом поиска в phpQuery я получаю не строку а объект phpQuery в котором не могу дальше найти нужную мне информацию. Но эту информацию я могу найти с помощью регулярного выражение в котором одним из параметром поиска является только строка в которой надо искать. Вот и получается что мне надо объект phpQuery преобразовать в строку объекта DOM php.
Вот попробую как советует товарищ с помощью метода toString() может получится.

Цитата:
И если да, то можно же создать класс, наследующий получаемый из phpQuery() тип объекта, и в этом дочернем классе реализовать метод __toString()


Пользоваться классами и объектами я умею у меня просто практики мало, так как работать с php я начал сравнительно не давно.
Цитата:
Я не знаю рецепта как его научить пользоваться объектами


Вот я глупый можно же и в phpQuery пользоваться регулярными выражениями как и в java
должна помочь в поиске по совпадению попробую
(Добавление)
Подскажите вот что: с помощью вот такой записи мы переменную $php_query преобразуем в переменную класса phpQuery. А как преобразовать теперь эту переменную в тип объекта класса php
PHP:
скопировать код в буфер обмена
  1. $php_query=phpQuery::newDocument($content);
  2. var_dump($php_query);

(Отредактировано автором: 19 Мая, 2019 - 10:26:49)

 
 Top
Строитель Модератор
Отправлено: 19 Мая, 2019 - 22:06:58
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




strengerst пишет:
попробую как советует товарищ с помощью метода toString() может получится.

Я уже пробовал - не получится. Вернее, объект-то можно превратить в сериализованную строку, но в ней не будет ожидаемых данных из html-разметки:
Спойлер (Отобразить)

Можно даже с помощью рефлексии превратить объект в строку (даже в НЕ сериализованную), но результат будет примерно такой же (без необходимого набора данных).

Выхода у вас два: изучить phpQuery, или переписать всё под регулярные выражения.
 
 Top
strengerst
Отправлено: 20 Мая, 2019 - 08:50:36
Post Id


Частый гость


Покинул форум
Сообщений всего: 172
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




А в phpQuery нету поиска по регулярным выражением?
Переписать phpQuery это хорошая шутка Ха-ха
 
 Top
Строитель Модератор
Отправлено: 20 Мая, 2019 - 09:01:20
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




strengerst пишет:
А в phpQuery нету поиска по регулярным выражением?

Я не использую phpQuery - в документации об этом можно узнать наверняка.
strengerst пишет:
Переписать phpQuery

Я имел ввиду переписать не phpQuery, а ваш скрипт под использование без phpQuery (только на регулярках) Закатив глазки
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB