Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 1
Регистрация: 04.04.2017
Сообщений: 21
1

Функция preg_match_all - вывод значения

07.04.2017, 11:37. Показов 1890. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
И снова привет) Вроде проблема, а вроде и не проблема. Дело вот в чем, с помощью функции preg_match_all нахожу нужное мне словосочетание. Оно заносится в массив $h1_name. Вывожу с помощью функции print_r, ожидаемый результат:
Array ( [0] => Array ( [0] => Фильтр-система обратного осмоса Аквафор ОСМО-50 ) ).
Хорошо думаю, отсекаю ненужную фигню с помощью функции str_replace все нужное - работает. Вывожу переменную через echo - все работает. А вот тут проблема, все отображает правильно, но работать как со строкой нельзя, и вот какие приколы:
вывожу циклом через echo посимвольно - отображает правильно (цикл с 0), а вот если вывожу просто символ через echo, то там до 87 символе конец строки, т.е. 0, а все остальные от 0 до просто ромб с вопросиком, как будто кодировку не видит, хотя все в utf-8, и ладно бы просто вывести, но мне нужно занести эту строку в бд, и ясное дело он ее не заносит, а как переконвертировать или исправить сей баг уже и не знаю. Что только не пробовал. Кто знает или сталкивался с таким, прошу помочь советом. Всем спасибо
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.04.2017, 11:37
Ответы с готовыми решениями:

Функция preg_match_all не работает, как должна
Функция preg_match_all как бы не работает: preg_match_all ("/<div...

Preg_match_all и пустые значения
Доброго времени суток, есть cледующий код: $data = filter_input_array(INPUT_POST); if...

Функция, позволяющая получить значения в ячейках С1, С3 для любого заданного значения X
Написать две функции z и g , которые позволяли бы получить их значения в ячейках С1,С3 для любого...

Оператор-функция. Подпрограмма - функция. Форматный вывод
Здравствуйте, товарищи! В общем ситуация такая: в школе информатики,считай, и не было. Сейчас...

4
0 / 0 / 0
Регистрация: 30.07.2014
Сообщений: 47
07.04.2017, 16:43 2
Можешь этот кусок кода выложить?
Уверен, что всё в utf-8?
Попробуй iconv использовать: $string = iconv("cp1251", "UTF-8", $string); ($string - твоя строка)

Добавлено через 1 минуту
Не суть важно, но замену сделал бы уже через preg_replace..)
Жду кусок кода
0
0 / 0 / 1
Регистрация: 04.04.2017
Сообщений: 21
08.04.2017, 16:29  [ТС] 3
Лучший ответ Сообщение было отмечено BeeezyV как решение

Решение

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
header('Content-Type: text/html; charset=utf-8');
 
function get_web_page( $url ){
  $uagent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14";
  $ch = curl_init( $url );
 
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   // возвращает веб-страницу
  curl_setopt($ch, CURLOPT_HEADER, 0);           // не возвращает заголовки
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);   // переходит по редиректам
  curl_setopt($ch, CURLOPT_ENCODING, "");        // обрабатывает все кодировки
  curl_setopt($ch, CURLOPT_USERAGENT, $uagent);  // useragent
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); // таймаут соединения
  curl_setopt($ch, CURLOPT_TIMEOUT, 120);        // таймаут ответа
  curl_setopt($ch, CURLOPT_MAXREDIRS, 10);       // останавливаться после 10-ого редиректа
 
  $content = curl_exec( $ch );
  $err     = curl_errno( $ch );
  $errmsg  = curl_error( $ch );
  $header  = curl_getinfo( $ch );
  curl_close( $ch );
 
  $header['errno']   = $err;
  $header['errmsg']  = $errmsg;
  $header['content'] = $content;
  return $header;
}
    $date = date('Y\-m\-d');
    $dbhost  = 'localhost';
    $dbuser  = 'root';
    $dbpass  = '';
    $dbname  = "spy";
    $dbtable = "kit";
 
    $conn = mysql_connect($dbhost, $dbuser, $dbpass)
        or die ('Ошибка подключения MySQL');
        echo "Успешное подключение MySQL<br />";
 
        $selected = mysql_select_db($dbname)
            or die( mysql_error() );
            echo "Соединение с базой данных удачно<br />";
 
    include 'simple_html_dom.php';
    $html = file_get_html('http://kit.by/santehnika/filtry/sistemy-obratnogo-osmosa/');
    array_unique($html->find('a'));
    
    foreach($html->find('a') as $element){
    if(substr_count($element, '/santehnika/filtry/sistemy-obratnogo-osmosa/filtr')!=0 && substr_count($element, '#')==0) {
    $url=$element->href;
    echo $url;
    echo "<br>";
    }
    }
 
    //$url='http://kit.by/santehnika/filtry/sistemy-obratnogo-osmosa/filtr-sistema-obratnogo-osmosa-akvafor-morion-m/';
    
$res = get_web_page( "$url" );
if (($res['errno'] != 0 )||($res['http_code'] != 200)){
    echo $res['errmsg'];
    }
else{
    $page = $res['content'];
    }
    preg_match_all('#[^>]+</span> руб.#', $page, $prices);
    preg_match_all('#[^>]+<span class="product_model">#', $page, $h1_name, PREG_PATTERN_ORDER);
 
    //echo "Главная цена: " .$prices[0][0]."<br />";
    
    $mainPrice = str_replace( array(" " , "руб.", "</span>") , '', $prices[0][0]);
    $mainName = str_replace( array('<span class="product_model">' , '>'), '', $h1_name[0][0]);
 
    for ($i=0; $i<strlen($mainPrice); $i++)
        if($mainPrice[$i]==',') $mainPrice[$i]='.';
    
    $FloatPrice = (float) $mainPrice;
    
    if($FloatPrice!=0) {
            
            //сохранение данных
            $insert = mysql_query("
                        INSERT INTO `$dbname`.`$dbtable` (`ID` , `Name` , `Price`, `Date`)
                        VALUES (NULL , 'Text' , $FloatPrice , '$date');
                    ");
    }
    
    
    
    
            //получение данных
            $results = mysql_query("SELECT * FROM $dbtable");
 
    mysql_close($conn);
    
//вывод полученных данных
    echo '
    <br>
    <table border="1">
    <tr>
    <td>ID</td>
    <td>Наименование</td>
    <td>Цена</td>
    <td>Дата</td>';
 
    while($row = mysql_fetch_array($results, MYSQL_ASSOC)) {
        echo "
        <tr>
          <td>{$row['ID']}</td>
          <td>{$row['Name']}</td>
          <td>{$row['Price']}</td>
          <td>{$row['Date']}</td>
        </tr>
        ";
    }
    echo "</table>";
?>
вот смотри, там где забираю цену, все работает правильно и логично, переменная $mainPrice. А вот там где название пытаюсь забрать, просто все в хлам. Сейчас попробую побаловаться с кодировкой
0
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 37
19.03.2019, 11:26 4
Доброго времени суток. Подскажите пожалуйста ниже приведена функция поиска изображения поста. Выводит последнее изображение. Как получить первое.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
global $post;
 $post = $post->post_content;
 $find_img ;
 ob_start();
 ob_end_clean();
 preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i',$post, $matches);
 $find_img = $matches [1] [0];
 if (empty($find_img)) {
 $find_img = "/images/default.jpg"; // Ссылка на заглушку
 }
 return $find_img;
 }
0
 Аватар для Строитель
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
19.03.2019, 14:10 5
Regolit, теоретически нужно вот эту строку $find_img = $matches[1][0]; заменить на вот эту $find_img = $matches[0][0];.

Не по теме:

P.S.: Кстати, будет лучше, если вы откроете новую тему для вашего вопроса.

0
19.03.2019, 14:10
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.03.2019, 14:10
Помогаю со студенческими работами здесь

Даны n чисел и функция f, принимающая значения 1...m. Требуется представить числа в таком порядке, чтобы значения функции f не убывали. Использовать м
Даны n чисел и функция f, принимающая значения 1...m. Требуется представить числа в таком порядке,...

preg_match_all
Подскажите Какой будет регулярка preg_match_all вот для поиска такой ссылки в тексте ...

preg_match_all
немогу правильно регулярку написать , вот к примеру текст $content=&quot; &lt;a href=&quot;site.com&quot;...

preg_match_all
Всем привет. Ребят мне надо парсировать с ютуб видео ее просмотры . Знаю есть ютуб апи. но мне...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
[Golang] 121. Best Time to Buy and Sell Stock
alhaos 28.01.2025
В этой задаче мы получаем слайс целых чисел, которые означают цену акции в разные моменты времени, и должны вернуть максимально возможную прибыль от купли продажи акции. / / . . .
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru