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

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

Модерирует : 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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

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

Mavrikii

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

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что -то странное происходит
 
Если я выполняю код отдельно, все результаты верны
 
   
 
Но если я выполняю это индивидуально
Некоторые результаты являются правильными, другие неправы
 
праведный
 
Il Morto, Il Massacro, La Trappola
il-morto-il-massacro-la-trappola
 
Eva Morirà Tra Sessanta Secondi
eva-morira-tra-sessanta-secondi
 
Diabolik e Ginko: Tempesta Di Ricordi
diabolik-e-ginko-tempesta-di-ricordi
 
неправильный
 
Post mortem – Terrorismo
post-mortem-terrorismo  
 
Eva Kant - Quando Diabolik Non C'era
eva-kant-quando-diabolik-non-c-era
 
Il Ratto, La Giudice, L'Incontro
il-ratto-la-giudice-l-incontro
 
 
Значения взяты из поля Title
 
Я думаю, что проблема заключается в поле Title
 
 

Код:
 
 
<?php
 
$search4 = $row ['Title'];
 
function slugify($text, $divider = '-')
{
  // replace non letter or digits by divider
  $text = preg_replace('~[^\pL\d\'–]+~u', $divider, $text);
 
  // transliterate
  $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
 
  // remove unwanted characters
  $text = preg_replace('~[^-\w]+~', '', $text);
 
  // trim
  $text = trim($text, $divider);
 
  // lowercase
  $text = strtolower($text);
 
  if (empty($text)) {
    return 'n-a';
  }
 
  return $text;
}
 
//echo slugify($search4);
 
$diabolikfix =  slugify($search4);
 
?>
 
 

 
 

Код:
 
<p class="bioheading">Search Title in Diabolik Astorina</p><p class="biodata"><img src="../images/Diabolik_favicon.ico" border="0" width="50">
<a target="_new" href="https://www.diabolik.it/pubblicazione/<?=$diabolikfix?>"><?php echo $diabolikfix; ?></a>
 
</p>
 
 

 
 
Данные в поле Title хранятся таким образом
 
Обратите внимание, что сепаратор отсутствует , Может быть, проблема здесь
 
Но с первой функцией все результаты были правильными
 
Только --- это не добавлено, поэтому проблема и второй код, который не кодифицирует данные из базы данных
 
 
   
 
   
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 12:24 14-10-2022 | Исправлено: zagorisback, 13:12 14-10-2022
zagorisback



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

Код:
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);

 
с этим
 

Код:
$text = iconv('UTF-8', 'ASCII//TRANSLIT', $text);

 
Он работает частично с акцентами: и цитирует меньше -
 
проблема и это
 
В поле заголовка хранятся 2 типа приборной панели (Они не одинаковы)
 
С этим это работает
 
   
 
С этим это не работает
 
   
 
Решение два
 
1) Замените все в базе данных на это -  (Но это 5300 записей)
 
2) изменить код, который также принимает И  -
 
Добавлено:
Mavrikii
 
Решены, заменили что -то в базе данных и теперь работает
 
Спасибо

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 15:01 14-10-2022 | Исправлено: zagorisback, 15:04 14-10-2022
Mavrikii

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

Цитата:
Что -то странное происходит

дождались бы ответа - написал бы, что, очевидно, используются разные символы.
нужно либо вырезать их, либо заменять на что то, либо заранее знать с чем можно столкнуться.
очевидно, что тире не минус, а в уникоде их очень много.
https://jkorpela.fi/dashes.html

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 04:36 15-10-2022
zagorisback



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

Цитата:
дождались бы ответа - написал бы, что, очевидно, используются разные символы.
нужно либо вырезать их, либо заменять на что то, либо заранее знать с чем можно столкнуться.
очевидно, что тире не минус, а в уникоде их очень много.
https://jkorpela.fi/dashes.html

 
 
Спасибо за информацию

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 08:57 15-10-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я хотел бы взять оригинальный и итальянский титул с сайта IMDB
 
Я могу получить только итальянский титул
Что -то не так в коде
 
2 регулярных выражения, похоже, работают в тесте
 
 
   
 
 
 
   
 
 
The Exorcist (1973) IMDB
 

Код:
 
 
<?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;
}
 
 
 
 
$webUrl="https://www.imdb.com/title/tt0070047/";
 
$data = get($webUrl);
 
 
 
 
preg_match_all('/(.*?<meta property="og:title" content=")(.+?)(?:\s*-\s*IMDb)/', $data, $result1, PREG_PATTERN_ORDER);
$result1 = $result1[2];
 
 
var_dump($result1);
 
echo '<br>';
 
foreach ($result1 as $res_original_title)
{
    echo $res_original_title;
}
 
echo '<br>';
 
 
preg_match_all('/(.*?<meta name="title" content=")(.+?)(?:\s*-\s*IMDb)/', $data, $result2, PREG_PATTERN_ORDER);
$result2 = $result2[2];
 
 
var_dump($result2);
 
echo '<br>';
 
foreach ($result2 as $res_italian_title)
{
    echo $res_italian_title;
}
 
 
 
?>
 
 


Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 21:00 31-10-2022 | Исправлено: zagorisback, 21:01 31-10-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
вопрос для PHP: Регулярные выражения (RegExp, Regular, eregi, preg)
 

Код:
(.*?<meta property="og:title" content=")(.+?)(?:\s*-\s*IMDb)

к чему так сложно то??
preg_match_all('#<meta property="(og?title" content="(.+)(\s*-\s*IMDb)#U', $str, $matches);
 
тега <meta name="title" в странице нет вообще. либо отображается для другого языка, либо подгружается динамически.

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



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

Цитата:
тега <meta name="title" в странице нет вообще. либо отображается для другого языка, либо подгружается динамически

 
А как получить оригинальный и итальянский титул?
В моем браузере я это вижу (см. Скриншот)
 
   

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 21:34 31-10-2022 | Исправлено: zagorisback, 21:35 31-10-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
открыть итальянскую версию сайта (в cookie должно быть lc-main=it_IT
лучше брать информацию отсюда

Цитата:
<script type="application/ld+json">{"@context":"https://schema.org","@type":"Movie","url":"/title/tt0070047/","name":"The Exorcist","alternateName":"L&apos;esorcista"

тут и название и альтернативный вариант.

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я решил это так, и более эффективно, и эта и цель, которую я хотел бы получить, всю информацию о фильме
 
   
 
Следующий шаг и введите данные в базе данных
 
Обновление о полученном прогрессе
благодарю вас
 
PS:
Проверьте, правильно ли код
 

Код:
 
 
$webUrl2="https://www.imdb.com/title/tt0070047/releaseinfo#akas";
 
$data2 = get($webUrl2);
 
 
preg_match_all('#(<table class="ipl-zebra-list akas-table-test-only">)((?s).*?)</table>#', $data2, $result2);
$result2 = $result2[2];
 
 
//var_dump($result2);
 
 
 
echo '<h4>Also Known As (AKA)</h4>';
 
foreach ($result2 as $res_aka)
{
    echo '<table><tr><td>' . $res_aka .'</td></tr></table>';
}
 
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 22:55 31-10-2022 | Исправлено: zagorisback, 23:00 31-10-2022
tonyweb

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
@Mavrikii
Good advice.
 
@zagorisback
I would create only a single table for the 'Also known As' list, unless you want to add, later, more information for the n-th language.
 

Код:
 
echo '<table>';
 
foreach ($result2 as $res_aka)
{
    echo '<tr><td>' . $res_aka .'</td></tr>';
}
 
echo '</table>';
 

 
[EDIT] I'm sorry, I was wrong. With your regular expression you're taking already the complete body of the table so, probably, you don't even need the foreach loop.  
 
 
-- Google Translated --
 
@Mavrikii
Хороший совет.
 
@zagorisback
Я бы создал только одну таблицу для списка «Также известный как», если только вы не захотите добавить позже дополнительную информацию для n-го языка.
 
[EDIT]
Прости, я был неправ. С вашим регулярным выражением вы уже берете полное тело таблицы, поэтому, возможно, вам даже не нужен цикл foreach.

Всего записей: 6 | Зарегистр. 22-12-2014 | Отправлено: 15:18 01-11-2022 | Исправлено: tonyweb, 21:20 01-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код работает, но я хотел бы создать массив для каждого имени или роли  
 
чаевые?
 
 

Цитата:
array(1) { [0]=> string(30730)  
 

 
 
   
 

Код:
 
 
$webUrl4="https://www.imdb.com/title/tt0070047/fullcredits";
 
$data4 = get($webUrl4);
 
 
preg_match_all('#(<table class="cast_list">)((?s).*?)</table>#', $data4, $result4);
$result4 = $result4[2];
 
$result4b = preg_replace('%(\/*\?ref_=ttfc_fc_cl_t\d)%', '', $result4);
 
var_dump($result4);
 
//echo '<br>';
 
echo '<h4>Cast verified as complete</h4>';
 
foreach ($result4b as $res_cast)
{
    echo '<table><tr><td>' . $res_cast .'</td></tr></table>';
}
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 22:00 01-11-2022
Mavrikii

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

Цитата:
foreach ($result4b as $res_cast)
{
    echo '<table><tr><td>' . $res_cast .'</td></tr></table>';
}

думайте лучше, зачем в каждом цикле выдавать новую таблицу?
 
а вытащить, например так https://regex101.com/r/hvQWaC/1

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



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

Цитата:
регулярные выражения обсуждаются в иной теме  

 
Да, я понимаю, но здесь это смесь PHP и регулярных выражений
Итак, в теме «Регулярные выражения» вы не можете даже опубликовать PHP -код
Я должен показать полный код, чтобы понять, как он работает
 

Цитата:
думайте лучше, зачем в каждом цикле выдавать новую таблицу?
 
а вытащить, например так https://regex101.com/r/hvQWaC/1

 
Мне это не кажется хорошей идеей, потому что я также должен снять код IMD, связанный с актером
 

Цитата:
Ellen Burstyn = name/nm0000995

 
Этот код необходим (и уникальный) для того, когда я введу данные в базе данных MySQL
 
 
 
 

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

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

Цитата:
Я должен показать полный код, чтобы понять, как он работает

оно не нужно, так как настолько просто, что ошибиться в нем.. нужно постараться.
 

Цитата:
Мне это не кажется хорошей идеей, потому что я также должен снять код IMD, связанный с актером

добавить еще кусок в регулярку - ничего сложного. просто нужно сразу говорить, что и зачем.
https://regex101.com/r/fuRc7x/1

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
 
Хорошо, как только у меня есть время, я пробую код (рабочие звонки) и обновляю вас
 
благодарю вас
 
PS: я изучаю регулярные выражения

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 10:13 02-11-2022
zagorisback



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

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 15:31 09-11-2022 | Исправлено: zagorisback, 15:03 17-12-2022
zagorisback



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

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 13:19 12-11-2022 | Исправлено: zagorisback, 15:03 17-12-2022
blueish2222

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Попробуйте использовать glob(), например glob('images/' . $row->imdbid . '*') для вывода списка всех связанных изображений.

Всего записей: 4 | Зарегистр. 02-12-2018 | Отправлено: 15:19 12-11-2022
zagorisback



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

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 16:28 12-11-2022 | Исправлено: zagorisback, 15:02 17-12-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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Компьютерный форум Ru.Board » Интернет » Web-программирование » Активные темы » MySql/PHP: общие вопросы


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru