Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Регулярные выражения (RegExp, Regular, eregi, preg)

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему     Написать ответ в эту тему

Rendom



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Учебники регулярных выражений
 
Кто сможет составить выражение для такого случая:

Код:
 
<table border=0>
<tr>
   <td>blablablabla<table border=0><tr><td>blablabla_UNIQTEXT_blablabla</td></tr></table></td>
   <td><table border=1><tr><td>blablabla</td></tr></table>666666</td>
</tr
</table>
 

Нужно удалить из этого всего кусок "<table border=0><tr><td>blablabla_UNIQTEXT_blablabla</td></tr></table>". Иными словами нужно вырезать текст от "<table" до "</table>" внутри которого есть строка "UNIQTEXT", но при этом не удалить лишнего. В результате должно получиться:

Код:
 
<table border=0>
<tr>
   <td>blablablabla</td>
   <td><table border=1><tr><td>blablabla</td></tr></table>666666</td>
</tr
</table>
 

Всего записей: 115 | Зарегистр. 27-10-2002 | Отправлено: 23:26 17-05-2005 | Исправлено: AZJIO, 04:05 09-12-2014
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
это не работает
 
Cast verified as complete
 
https://regex101.com/r/fi3LI3/1
 
 

Код:
 
$webUrl4="https://www.imdb.com/title/tt0070047/";
 
$data4 = get($webUrl4);
 
 
preg_match_all('#(<table class="cast_list">)((?s).*?)</table>#', $data4, $result4);
$result4 = $result4[2];
 
 

Всего записей: 628 | Зарегистр. 05-05-2014 | Отправлено: 20:07 01-11-2022 | Исправлено: zagorisback, 20:10 01-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
$webUrl4="https://www.imdb.com/title/tt0070047/"

ну нет там cast_list, зато есть по https://www.imdb.com/title/tt0070047/fullcredits

Всего записей: 15595 | Зарегистр. 20-09-2014 | Отправлено: 21:07 01-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
 

Цитата:
ну нет там cast_list, зато есть по https://www.imdb.com/title/tt0070047/fullcredits

 
Спасибо, теперь это работает
 
 

Всего записей: 628 | Зарегистр. 05-05-2014 | Отправлено: 21:26 01-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как мне взять "Box Office"?
Есть много справочного списка <table> titlereference-list ipl-zebra-list
 
   
 
https://www.imdb.com/title/tt0070047
 
 

Код:
(<table class="titlereference-list ipl-zebra-list">)((?s).*?)</table>

Всего записей: 628 | Зарегистр. 05-05-2014 | Отправлено: 16:41 08-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
Привязаться к titlereference-section-box-office

Всего записей: 15595 | Зарегистр. 20-09-2014 | Отправлено: 18:13 08-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 

Цитата:
Привязаться к titlereference-section-box-office

 
 

Цитата:
array(0) { }  

 

Код:
preg_match_all('#(<section class="titlereference-section-box-office">)((?s).*?)</section>#', $data5, $result5);
$result5 = $result5[2];

 

Всего записей: 628 | Зарегистр. 05-05-2014 | Отправлено: 18:34 08-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
array(0) { }  

да потому что нет этого на
Цитата:
https://www.imdb.com/title/tt0070047

 

Всего записей: 15595 | Зарегистр. 20-09-2014 | Отправлено: 21:13 08-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
 
А как вы взяли этот исходный код?
 
я вижу это
 

Цитата:
 
 
<section class="titlereference-section-box-office">
                <h4 class="ipl-header__content ipl-list-title">Box Office</h4>
                <table class="titlereference-list ipl-zebra-list">
        <tr class="ipl-zebra-list__item">
            <td class="ipl-zebra-list__label">Budget</td>
            <td>
                    $12,000,000 (estimated)
            </td>
        </tr>
        <tr class="ipl-zebra-list__item">
            <td class="ipl-zebra-list__label">Opening Weekend United States</td>
            <td>
                    $8,157,666, 24 Sep 2000
            </td>
        </tr>
        <tr class="ipl-zebra-list__item">
            <td class="ipl-zebra-list__label">Cumulative Worldwide Gross</td>
            <td>
                    $441,306,145
            </td>
        </tr>
                </table>
            </section>
 


Всего записей: 628 | Зарегистр. 05-05-2014 | Отправлено: 21:50 08-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
А как вы взяли этот исходный код?

возможно зависит от страны, браузера (параметров запроса), используемых cookies и много чего разного.
я показал какой код выдается мне.

Всего записей: 15595 | Зарегистр. 20-09-2014 | Отправлено: 21:51 08-11-2022 | Исправлено: Mavrikii, 21:52 08-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Первый исходный код страницы взят из Firefox
 
это взято с "Pale Moon" и импортируется на "Notepad ++"
 
Код другой (Странно эта штука), Это работает сейчас
 

Код:
 
preg_match_all('#(data-testid="title-boxoffice-budget">)((?s).*?)<script>#', $data5, $result5);
$result5 = $result5[2];
 

 
Спасибо за совет
 
Обновлять:
Анализ страницы источника Я обнаружил, что данные также хранятся в формате JSON
Как их извлечь?
 
 

Код:
 
 
<script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"tconst":"tt0070047","aboveTheFoldData":{"id":"tt0070047","productionStatus":{"currentProductionStage":{"id":"released","text":"Distribuito","__typename":"ProductionStage"},"productionStatusHistory":[{"status":{"id":"released","text":"Distribuito","__typename":"ProductionStatus"},"__typename":"ProductionStatusHistory"}],"restriction":null,"__typename":"ProductionStatusDetails"},"canHaveEpisodes":false,"series":null,"titleText":{"text":"L'esorcista","__typename":"TitleText"},"titleType":{"text":"Film","id":"movie","isSeries":false,"isEpisode":false,"categories":[{"value":"movie","__typename":"TitleTypeCategory"}],"canHaveEpisodes":false,"__typename":"TitleType"},"originalTitleText":{"text":"The Exorcist","__typename":"TitleText"},"certificate":{"rating":"VM14","__typename":"Certificate"},"releaseYear":{"year":1973,"endYear":null,"__typename":"YearRange"},"releaseDate":{"day":20,"month":9,"year":1974,"__typename":"ReleaseDate"},"runtime":{"seconds":7320,"__typename":"Runtime"},"canRate":{"isRatable":true,"__typename":"CanRate"},"ratingsSummary":{"aggregateRating":8.1,"voteCount":407194,"__typename":"RatingsSummary"},"meterRanking":{"currentRank":75,"rankChange":{"changeDirection":"UP","difference":52,"__typename":"MeterRankChange"},"__typename":"TitleMeterRanking"},"primaryImage":{"id":"rm2744917505","width":1472,"height":2239,"url":"https://m.media-amazon.com/images/M/MV5BYWFlZGY2NDktY2ZjOS00ZWNkLTg0ZDAtZDY4MTM1ODU4ZjljXkEyXkFqcGdeQXVyMjUzOTY1NTc@._V1_.jpg","caption":{"plainText":"L'esorcista (1973)","__typename":"Markdown"},"__typename":"Image"},"images":{"total":202,"__typename":"ImageConnection"},"videos":{"total":3,"__typename":"TitleRelatedVideosConnection"},"primaryVideos":{"edges":[{"node":{"id":"vi3987325721","isMature":false,"createdDate":"2021-09-27T13:21:32.372Z","contentType":{"id":"amzn1.imdb.video.contenttype.trailer","displayName":{"value":"Trailer","__typename":"LocalizedString"},"__typename":"VideoContentType"},"thumbnail":{"url":
................................................................................................
 
 

Всего записей: 628 | Зарегистр. 05-05-2014 | Отправлено: 22:58 08-11-2022 | Исправлено: zagorisback, 23:29 08-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
Как их извлечь?

вытащить все, далее json_decode

Всего записей: 15595 | Зарегистр. 20-09-2014 | Отправлено: 00:10 09-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 

Цитата:
вытащить все, далее json_decode

 
Я попробовал это, но это не работает
Я хотел бы извлечь и преобразовать данные JSON в массив
 

Код:
 
<?php
 
    function get ($url) {
    $ch = curl_init ($url);
    curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0');
    curl_setopt ($ch, CURLOPT_HEADER, 0);
    curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
    curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Accept: */*','Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3','Connection: keep-alive','Upgrade-Insecure-Requests: 1','Pragma: no-cache','Cache-Control: no-cache'));
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    $res = curl_exec ($ch);
    curl_close($ch);
    return $res;
}
 
 
 
 
$id = 'tt0070047' ; // example id
$webUrl1 = 'https://www.imdb.com/title/$id';
 
$url = get($webUrl1);
 
 
preg_match_all('#(<script id="__NEXT_DATA__" type="application/json">)((?s).*?)</script>#', $url, $data);
    //$data = $data[0];
 
 
// decode the JSON string we find into a associative array
$data = json_decode( $json, true );
 
// you can now use this array to query the data you want
$url = $data['id'];
echo "Url: $url" ;
 
echo '<br>';
 
$name = $data['titleText'];
echo "Title: $name" ;
 
echo '<br>';
 
$alternateName = $data['alternateName'];
echo "Alternate Name: $alternateName" ;
 
echo '<br>';
 
$image = $data['image'];
echo "Poster: $image" ;
 
echo '<br>';
 
$description = $data['description'];
echo "Trama: $description" ;
 
echo '<br>';
 
$review = $data['review']['reviewBody'];
echo "Review: $review" ;
 
echo '<br>';
 
$contentRating = $data['contentRating'] ;
echo "Content Rating : $contentRating" ;
 
echo '<br>';
 
$genre = $data['genre'] ;
echo "Genre : $genre[0]" ;
 
echo '<br>';
 
$datePublished = $data['datePublished'] ;
echo "Date Published : $datePublished" ;
 
echo '<br>';
 
$keywords = $data['keywords'] ;
echo "Keywords : $keywords" ;
 
echo '<br>';
 
$person = $data ['actor']['url']['name'] ;
echo "Person : $person[0]" ;
 
 
 
echo '<br><p>';
 
var_dump($data);
 
echo '<br></p>';
 
 
    
?>
 

 

Всего записей: 628 | Зарегистр. 05-05-2014 | Отправлено: 09:28 09-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
$data = json_decode( $json, true );

откуда возьмется $json?

Всего записей: 15595 | Зарегистр. 20-09-2014 | Отправлено: 11:13 09-11-2022 | Исправлено: Mavrikii, 11:39 09-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 

Цитата:
откуда возьмется $json?

 
Warning: json_decode() expects parameter 1 to be string, array given in .. on line 143
 
 

Код:
 
preg_match_all('#(<script id="__NEXT_DATA__" type="application/json">)((?s).*?)</script>#', $url, $json);
    //$json = $json[2];
 
 
// decode the JSON string we find into a associative array
$data = json_decode( $json, true );  // line 143
 

 

Всего записей: 628 | Зарегистр. 05-05-2014 | Отправлено: 12:03 09-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
ну думайте, блин, хватит вносить мелкие изменения и снова тащить сюда

Цитата:
Warning: json_decode() expects parameter 1 to be string, array given in .. on line

ясно же сказано, очевидно, что
Цитата:
 $url, $json)

$json массив.. ну написано же нормальным языком.

Всего записей: 15595 | Зарегистр. 20-09-2014 | Отправлено: 12:07 09-11-2022
Alinalessio

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть такой код:

Код:
 
 <td width=113 colspan=2 style='width:3.0cm;border-top:none;border-left:none;
 
  border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
  mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt;height:43.95pt'>
  <p class=MsoNormal align=center style='text-align:center;text-indent:0cm'><b><span
  style='font-size:10.0pt;font-family:"Arial",sans-serif;mso-fareast-font-family:
  "Times New Roman";mso-fareast-language:RU'><o:p>Хороший текст</o:p></span></b></p>
  </td>

Надо чтобы на выходе осталось:

Код:
 
<td><p><span>Хороший текст</span></p></td>
 

 
Мой не очень рабочий код:

Код:
 
(td)[^<>]*(>)\n|.*?<o:p>(.*?)</o:p>\n|.*?(</td>)
 

 
Кто знает как добраться до текста, очистив теги?
Тегами <p> и <span> можно пренебречь.

Всего записей: 223 | Зарегистр. 21-06-2010 | Отправлено: 22:20 10-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alinalessio

Код:
$keep = ['td', 'p', 'span'];
echo preg_replace('#<(\w+)[^>]+>#', '<$1>', strip_tags($str, $keep));

Всего записей: 15595 | Зарегистр. 20-09-2014 | Отправлено: 22:31 10-11-2022 | Исправлено: Mavrikii, 22:32 10-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Регулярное выражение для выбора всех буквенно -цифровых символов + пространства до начала NM
Мне нужно это, чтобы просмотреть фотографию, касающуюся актера, если она присутствует в базе данных IMDID (NMXXXXX) и в папке
 
Фотографии в папке images_actors_profile
 

Цитата:
 
Doris Day nm0000013.jpg
Elizabeth Montgomery nm0000548.jpg
Enzo Cannavale nm0134073.jpg
Enzo Garinei nm0307451.jpg
Franco Diogene nm0227878.jpg
Ida Lupino nm0526946.jpg
Jennifer Jones nm0428354.jpg
Jimmy il Fenomeno nm0271978.jpg
 

 
 

Код:
$imdbid = $row->imdbid;
$stringa_attore = 'Doris Day '; // Имя актера
$url = 'images_actors_profile/' . $stringa_attore .  $imdbid . '.jpg';
$pattern = $imdbid; // nm0694843
preg_match('/' . $pattern . '\\.jpg/s', $url, $arr);
var_dump($arr);

 

Всего записей: 628 | Зарегистр. 05-05-2014 | Отправлено: 13:05 24-11-2022 | Исправлено: zagorisback, 16:18 24-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
/(.*)nm\d+/
можно вместо + использовать {7}

Всего записей: 15595 | Зарегистр. 20-09-2014 | Отправлено: 23:14 24-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Спасибо
 
Что если я хотел извлечь только имя до? До начала nm
I Imdb и .jpg Code, мне не нужен
 

Всего записей: 628 | Зарегистр. 05-05-2014 | Отправлено: 23:24 24-11-2022 | Исправлено: zagorisback, 23:29 24-11-2022
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Регулярные выражения (RegExp, Regular, eregi, preg)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru