PHP задачи с собеседований
3.05K subscribers
469 photos
6 videos
11 files
359 links
Задачи, тесты и теоретические вопросы по PHP.

Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
Download Telegram
👨🏻‍💻 Удалить повторения подстроки в строке

Есть строка условно говоря такого вида:

petya kolya vasya oleg misha vasya vasya ivan vasya

Как на php удалить из неё все повторяющиеся подстроки vasya, кроме первой, чтобы осталось

petya kolya vasya oleg misha

PHP задачи с собеседований
👨🏻‍💻 Найти корректно число старта xref таблицы в pdf документе

Допустим у меня есть большой pdf файл версии 1.6. И в конце файла должна быть информация:

startxref
5638681
%%EOF

Благодаря которой, естественно, система знает положение начала xref таблицы пдфа. Но у меня там значится только:

startxref
56386

И естественно файл сыпется и везде не читается. Этот файл лишь как пример. Основной вопрос заключается в том - возможно ли как-то на лету пересчитать положение начала xref и проставить его(число) в нужном месте в конце файла, чтобы даже в случае ошибки она была исправлена и файл бы прочитался? Я поискал по документу и слово Xref, кроме конца в startxref, встречается только в самом конце документа, аж на 28164 строке, в потоке прямо перед концом файла и словом startxref. Получается как-то вот так:

<</DecodeParms<</Columns 5/Predictor 12>>/Filter/FlateDecode/ID[]/Info 81 0 R/Length 467/Root 83 0 R/Size 155/Type/XRef/W[1 3 1] вот в этом фрагменте:

154 0 obj
<</DecodeParms<</Columns 5/Predictor 12>>/Filter/FlateDecode/ID[<A95E63F8E64607C01DE088DCA9B76927><A934A84176582B4C8931FAEC898E990B>]/Info 81 0 R/Length 467/Root 83 0 R/Size 155/Type/XRef/W[1 3 1]>>stream
hЮ¬’1LSQ†П=ЇTh…гD\”(С :tPг`Xl|qa`qRЌ@HCЦД'BЊ,jBd!Д°‡VЁ‰ў‰>ќФШ(¶Шw|зЬЮј6ДЌелџпю9чјж" 8ЂРHptьП9яє"~F!…їnђыкс‚ц€d§Z<ц/|_њzЅ…tдД·љсї]WыТ±іy>ыпгЭЪ· uЅ-пѕ{бЅцa¤УwЖЄ¦яссeн!х\Я¬˜~юйOн[‘вгkЊПҐKЪ·!ќ+>Ъ5s2v\ыТEы|ЩфЯТЪG‘О¬пяjіюЅ‡‘’эЈЫfОвrBыv¤«gпmїђн“я •уБтНЛXНMя'-Y=Ђ[
у§uV•ЗќјХзouТjЮJ9_њ#“|ЪЩіoзыН3эi)Џэн-4E ~-аEдЮ’0,¦-0d3±Tп“уcKЮШ„LdZ]LUх©zу’‡˜xSr«4o3/eЕИ¶±њд‡Т\’Ь!Н»МДІ˜1IЙЙ z&чкУS|otКзьЮњ˜OТМЯ WВКьЄдХ†УS?u…Эrы°d~3Ч*рOЂ ш…§±
endstream
endobj
startxref
56386

Я уже пыталя по советам с интернета подсчитать в байтах кол-во символов перед словом xref с начала файла, но там переваливает значение за 9 лямов, а мне надо ровно 5638681. Сам вес файла кстати 5 639 408 в байтах. Есть ли какие-то рабочие способы такого подсчета или может какие-то консольные утилиты, которым можно скормить файл и в ответ получить нужное значение старта xref?

PHP задачи с собеседований
👨🏻‍💻Вопрос от пользователя

Как установить Thumbnail Категории через код?

Господа, не пойму как установить картинку для категории в WP? В теме они поддерживаются, вручную установить можно. set_post_thumbnail - не отрабатывает. У меня есть код:

foreach ($house['renderer'] as $foto) {
$img_id[]['picture'] = media_sideload_image($foto, 'product_cat_' . $insert_res['term_id'], '', 'id');
}
update_field('foto', $img_id, 'product_cat_' . $insert_res['term_id']);
set_post_thumbnail('product_cat_' . $insert_res['term_id'], $img_id[0]['picture']);

Загружаю фото со стороннего ресурса, получаю id фото в массив, передаю в update_field - отрабатывает отлично, фотки подключаются в множственное поле ACF с изображениями. $img_id[0]['picture'] - ID вложения, всё верно. Но не работает((

PHP задачи с собеседований
👨🏻‍💻Вопрос от пользователя

Объединение массива

Существует вывод данных из базы, необходимо объединить все данные из массивов и вывести полученный массив только с уникальными значениями

Array ( [0] => 83 ) Array ( [0] => 85 )
Array ( [0] => 77 ) Array ( [0] => 85 )
Array ( [0] => 83 ) Array ( [0] => 85 )Array ( [0] => 55 ) Array ( [0] => 99 )

выглядит вот так введите сюда описание изображения

    $sql222 ="select DISTINCT number_cont from  ".$new_array[$i]."";
$result222 = mysqli_query($con, $sql222);
if(mysqli_num_rows($result222) > 0)
{
echo '<table>';
while($row = mysqli_fetch_assoc($result222))
{
$re=array_merge((array)$row["number_cont"]);
print_r($re);
}
echo '</table>';
}


В PHP вообще не силен, поэтому прошу помощи

PHP задачи с собеседований
Почему возникает ошибка при попытке передать данные в виде JSON из PHP в JS?

Данные на странице выводятся нормально. Но когда пытаюсь их передать js обработчику для корзины, выдает ошибку. Вот код шаблона:

foreach ($dishes as $item) {
<div class="products_one_price_card">
<?php
$productJSON = json_encode($item, JSON_UNESCAPED_UNICODE);
?>
<button data-product="<?php echo $productJSON; ?>">В КОРЗИНУ</button>
</div>
}


код js:

const oneProductCardButton = document.querySelectorAll('.products_one_price_card button');

oneProductCardButton.forEach((oneProductCardButtonItem) => {
oneProductCardButtonItem.addEventListener('click', (event) => {
const productJSON = oneProductCardButtonItem.getAttribute('data-product');
const product = JSON.parse(productJSON);

console.log(product);
});
});


и выдает ошибку: Uncaught SyntaxError: Expected property name or '}' in JSON at position 1 (line 1 column 2) at JSON.parse () at HTMLButtonElement.

Я вывожу переменную $productJSON с помощью var_dump, вроде выводится нормальный json:

{"id":"1","name":"Пицца 4 сезона","eng_name":"pizza-4-sezona","description":"Здесь краткое описание если нужно, состав, ингридиенты и т.д.","img":"pizza-4-sezona-family-time.jpg","price":"3200","category":"pizza","dishes_option_name":"pizza_size","dishes_option_values":"30_3200,40_3900"}


в чем может быть проблема?

PHP задачи с собеседований
👨🏻‍💻Вопрос от пользователя

Telegram API: кнопка с заготовленным сообщением для бота


Имеется канал в telegram, в него добавлен бот со всеми правами администратора. Можно ли сделать так, что при клике на кнопку будет открываться диалог с ботом с заготовленным сообщением. Как будто пользователь уже нажал кнопку start, плюс бот получил какую-то служебную информацию, а нажатой кнопке? Грубо говоря, нужно добавить в кнопу url (на бота), callback_data и начать при этом диалог с ботом. Такое реально? Библиотеки не использую, пишу на чистом php. Заранее всем спасибо.

PHP задачи с собеседований
Почему на PHP код не работает как на Javascript?

Есть Javacript и работает идеально:

if (!navigator.cookieEnabled !window.caches) {
document.cookie = "referrer=" + document.referrer;
window.history.back();
}


Но на PHP возвращает на домен (например возвращает yandex ru, а заходил с yandex ru/kupti-slona), а мне надо на предыдущую страницу.

if (!isset($_COOKIE['referrer']) && (!isset($_SERVER['HTTP_CACHE_CONTROL']) $_SERVER['HTTP_CACHE_CONTROL'] !== 'max-age=0')) {
setcookie('referrer', $_SERVER['HTTP_REFERER'], time() + 3600, '/');
header('Location: ' . $_SERVER['HTTP_REFERER']);
exit;
}


PHP задачи с собеседований
👨🏻‍💻 Проблема с формой оплаты

Делаю магазин. Хочу подключить оплату, взял готовую форму yoomoney, так же хочу отправлять данные в таблицу mysql. Но столкнулся с проблемой, что после перехода на форму оплаты данные не добавляются в таблицу.

<form method="post" action="https://yoomoney.ru/quickpay/confirm">
<h2>Оформление Заказа</h2>
<div class="adr">
<input name="address" type="text" class="form-control mb-4" placeholder="Введите свой адрес" required>
</div>
<div class="ord-detail">
<h3 class="py-4 float-right">Total :₽ <?php echo $total->total; ?></h3>
</div>
<input type="hidden" name="receiver" value="4100***************"/>
<input type="hidden" name="label" value="$order_id"/>
<input type="hidden" name="quickpay-form" value="button"/>
<input type="hidden" name="sum" value="<?php echo $total->total; ?>" data-type="number"/>
<input class="btn btn-primary" type="submit" value="Оплата" name="orderplace">
<!-- <input class="btn btn-primary" type="submit" value="Оплата" name="orderplace"> -->
</form>

//INSERT ORDER
if (isset($_POST['orderplace'])) {
$address = $_POST['address'];
$sql = "INSERT INTO orders(user, address) VALUES(:user,:address)";
$query = $db->prepare($sql);
$query->bindParam(':user', $user, PDO::PARAM_STR);
$query->bindParam(':address', $address, PDO::PARAM_STR);
$query->execute();
$lastInsertId = $db->lastInsertId();
if ($lastInsertId) {

foreach ($results as $item) {
$sqlitem = "INSERT INTO orderitems (oid,ptitle,price) VALUES (:orderid,:title,:price)";
$stmtitem = $db->prepare($sqlitem);
$stmtitem->bindParam("orderid", $lastInsertId, PDO::PARAM_STR);
$stmtitem->bindParam("title", $item->title, PDO::PARAM_STR);
$stmtitem->bindParam("price", $item->price, PDO::PARAM_INT);
$stmtitem->execute();


PHP задачи с собеседований
Как правильно залить файл php с регистрацией через базу данных на репозиторий?

В проекте сделали страницу с регистрацией на php, работающую через базу данных, залили в репозиторий на GitHub, но невозможно открыть страницу с регистрацией на втором ПК, пишет ошибку "Bad Gateway", которая указывает на ошибку подключения базы данных. Help :/ Кто знает в чем проблема?

PHP задачи с собеседований
👨🏻‍💻 Вывод данных циклом внутри цикла

На страницу выводится информация циклом foreach, а внутри есть еще такой же цикл который выводит другую информацию, но после внутреннего цикла, дальше выводятся данные только по внутреннему циклу. Как его закончить и выводить далее данные только по первому циклу? Код примерно такой:

<?php foreach ($result_day1 as $value) { ?>
<p><?= $value['number'] ?></p>

<?php foreach ($result_teachers as $value) { ?>
<option class="schedule__teacher__name" name="<?= $value['teacher_id'] ?>" value="
<?= $value['teacher_name'] ?>"><?= $value['teacher_name'] ?></option>
<?php } ?>



<-- далее должны выводится данные из цикла $result_day1, а выводятся из цикла $result_teachers-->

<div class="modal fade" id="deleteModal<?= $value['id'] ?><?= $value['group_kollege'] ? >" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">


PHP задачи с собеседований
👨🏻‍💻Вопрос от пользователя

Неправильные пути к файлам Laravel на хостинге

Всем привет! Пытаюсь 1 раз задеплоить свой проект, но столкнулся с нижеприведенной проблемой :

Warning: require(/var/www/u123456/data/www/тут домен/ANGELS-iT-DOCUMENTATOR/Application/public/../Application/vendor/autoload.php): Failed to open stream: No such file or directory in /var/www/u123456/data/www/тут домен/ANGELS-iT-DOCUMENTATOR/Application/public/index.php on line 17


Fatal error: Uncaught Error: Failed opening required '/var/www/u123456/data/www/тут домен/ANGELS-iT-DOCUMENTATOR/Application/public/../Application/vendor/autoload.php' (include_path='.:') in /var/www/u123456/data/www/тут домен/ANGELS-iT-DOCUMENTATOR/Application/public/index.php:17 Stack trace: #0 {main} thrown in /var/www/u123456/data/www/тут домен/ANGELS-iT-DOCUMENTATOR/Application/public/index.php on line 17



Проект на хостинге reg ru и находится по пути www/домен/ANGELS-iT-DOCUMENTATOR/Application/и тут все файлы проекта. Также есть ссылка на index.php из public, которая находится по пути www/домен.

Ниже код Index.php:

<?php

define('LARAVEL_START', microtime(true));

/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader for
| our application. We just need to utilize it! We'll simply require it
| into the script here so that we don't have to worry about manual
| loading any of our classes later on. It feels great to relax.
|
*/

require __DIR__.'/../Application/vendor/autoload.php';

/*
|--------------------------------------------------------------------------
| Turn On The Lights
|--------------------------------------------------------------------------
|
| We need to illuminate PHP development, so let us turn on the lights.
| This bootstraps the framework and gets it ready for use, then it
| will load up this application so that we can run it and send
| the responses back to the browser and delight our users.
|
*/

$app = require_once __DIR__.'/../Application/bootstrap/app.php';


$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);

$response->send();

$kernel->terminate($request, $response);


Буду очень рад любой помощи и подсказке, а если где-то ошибся, то поправьте меня )))

PHP задачи с собеседований
Сортировка меток WordPress

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

В файл functions.php своей темы я добавил

add_filter('widget_tag_cloud_args',function set_tag_cloud_args( $args ) {
$args['orderby '] = 'count';
$args['order '] = 'DESC';

return $args;
});


Файл category-template.php:

$defaults = array(
'smallest' => 8,
'largest' => 22,
'unit' => 'pt',
'number' => 45,
'format' => 'flat',
'separator' => "\n",
'orderby' => 'count',
'order' => 'DESC',
'exclude' => '',
'include' => '',
'link' => 'view',
'taxonomy' => 'post_tag',
'post_type' => '',
'echo' => true,
'show_count' => 0,
);

Но это не привело к результату.

PHP задачи с собеседований
👨🏻‍💻 Доработать функцию PHP?

Я только начинаю осваивать PHP. Код, которым я пользуюсь:

<?php
$file = 'result.txt';
$long_url = urlencode('mylink.com');
$api_token = '0123456789';
$api_url = "https://mysite.com/api?api={$api_token}&url={$long_url}";
$result = file_get_contents($api_url);
if( $result ){
echo $result;
}
file_put_contents($file, $long_url . PHP_EOL, FILE_APPEND);
file_put_contents($file, $result . PHP_EOL, FILE_APPEND);
fclose($file);
sleep(1);
?>


Вроде бы работает исправно. Но мне необходимо ссылку mylink com брать из отдельного файла mylink.txt. Размер файла примерно 10-30 мб.

В нём список ссылок, каждая в отдельной строке. Надо, чтобы по очереди бралась одна ссылка, обрабатывалась с помощью функции выше и результат записывался в файл result.txt.

Есть такой вариант чтения файла:

<?php
$file = fopen('mylink.txt', 'r');
while (!feof($file)) {
echo fgets($file);
echo '<br>';
}
fclose($file);
?>


Но как соединить эти функции, я без понятия.

В результате должно произойти следующее:

прочтена ссылка из файла mylink.txt
ссылка обработана с помощью $api_url
результат записан в файл result.txt в такой последовательности (в одной строке записывается $long_url, в следующей строке записывается $result
Далее выполняется задержка 1 сек.
Цикл продолжается, до тех пор, пока файл mylink.txt полностью не будет прочитан.
Пожалуйста, помогите доработать код.

PHP задачи с собеседований
👨🏻‍💻Вопрос от пользователя

Как настроить файл .htpasswd и .htaccess для запуска проекта на openserver

Всем привет! У меня появилась проблема что я никогда не работал с проектом на php. Теперь мне надо сделать некоторые правки на проекте. Мне прислали проект и я запустил его на open-server. Но оказывается там есть файл .htaccess который не дает мне запустить.

PHP задачи с собеседований