[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помогите поправить код
dalavier
Здравствуйте. Хотел самостоятельно написать небольшой модуль для сайта, но так как в РНР полный нуб, запутался и вышла чепуха:



$res = $db->query("SELECT id, title, date, short_story, full_story, category FROM " . PREFIX . "_post $cond AND WHERE `short_story`
REGEXP 'youtube' OR `full_story` REGEXP 'youtube' AND approve=1 ORDER BY rand() LIMIT 1"
);

$row = $db->get_row($res);

function get_code($res) {

$pattern = '#(?<=(?:v|i)=)[a-zA-Z0-9-]+(?=&)|(?<=(?:v|i)\/)[^&\n]+|(?<=embed\/)[^"&\n]+|(?<=??(?:v|i)=)[^&\n]+|(?<=youtu.be\/)[^&\n]+#';
preg_match_all($pattern, $res, $matches);

foreach ($matches as $match) {
$img = "<a class="floatbox" href="http://www.youtube.com/v/".str_replace('?rel=0','', $match[0])."><img style="border: 1px solid #EAEAEA; padding: 5px;" src='http://img.youtube.com/vi/".str_replace('?rel=0','', $match[0])."/0.jpg' /></a>";
break;
}}


Помогите разобраться и поправить код.
Суть такова: скрипт должен выбирать из БД записи с видео из youtube, вытаскивать из всей записи id видео типа oUV6PSv-CZE, потом формировать код, вставки видео ссылкой с анкором в виде картинки из самого видео.

Вроде бы иду по правильному пути, но плохо знаю РНР и поэтому топчусь на месте. Я только учусь, потыкайте носом...
Игорь_Vasinsky
так ясен пень - какой самописный модуль если 0 в php?

чёб коды видео не хранить отдельно? в контексте они у вас чтоли?

айайай

Цитата
$pattern
- он вообще справляется со своей задачей?

и для чё REGEXP нагибать всё? LIKE не достаточно было бы?



_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
dalavier
LIKE не срабатывает. Коды видео хранить отдельно сложно, т.к. они вставляются в код статьи при помощи обычного embed. Возможно это важно модуль для DLE.

Ну и... код не работает, поэтому и прошу помощи.
Игорь_Vasinsky
я уже писал - необходимо удостовериться что выборка возращает результат, т.е. необходимо удастовериться что срабатывает REGEXP и потом - что паттерн - правильно ищет

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
dalavier
По отдельности выборка SELECT все правильно выбирает, pattern тоже, но в целом код не работает...
Игорь_Vasinsky
$res = $db->query("SELECT id, title, date, short_story, full_story, category FROM " . PREFIX . "_post $cond AND WHERE `short_story`
REGEXP 'youtube' OR `full_story` REGEXP 'youtube' AND approve=1 ORDER BY rand() LIMIT 1"
);

$row = $db->get_row($res);

function get_code($res) {

$pattern = '#(?<=(?:v|i)=)[a-zA-Z0-9-]+(?=&)|(?<=(?:v|i)\/)[^&\n]+|(?<=embed\/)[^"&\n]+|(?<=??(?:v|i)=)[^&\n]+|(?<=youtu.be\/)[^&\n]+#';
preg_match_all($pattern, $res, $matches);


echo '<pre>' . print_r($matches, 1) . '</pre>';


что вернул этот код?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
dalavier
Parse error: syntax error, unexpected $end
DedMorozzz
скобку от ф-и закрой.

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Игорь_Vasinsky
$res = $db->query("SELECT id, title, date, short_story, full_story, category FROM " . PREFIX . "_post $cond AND WHERE `short_story`
REGEXP 'youtube' OR `full_story` REGEXP 'youtube' AND approve=1 ORDER BY rand() LIMIT 1"
);

$row = $db->get_row($res);

function get_code($res) {

$pattern = '#(?<=(?:v|i)=)[a-zA-Z0-9-]+(?=&)|(?<=(?:v|i)\/)[^&\n]+|(?<=embed\/)[^"&\n]+|(?<=??(?:v|i)=)[^&\n]+|(?<=youtu.be\/)[^&\n]+#';
preg_match_all($pattern, $res, $matches);


echo '<pre>' . print_r($matches, 1) . '</pre>';

}
get_code($res);



_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
dalavier
Warning: preg_match_all() expects parameter 2 to be string

так ругается на строку:
preg_match_all($pattern, $res, $matches);
Игорь_Vasinsky
как же так? вы же писали

Цитата
По отдельности выборка SELECT все правильно выбирает, pattern тоже, но в целом код не работает...


у вас бяка в $row = $db->get_row($res);

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.