echo Carbon::now()->subMinutes(2)->locale('ru_RU')->diffForHumans(); // '2 минуты назад'
$files = [
'file-foo.php',
'file.php',
'file2.php',
'file-bar.php',
'file3.php',
];
shuffle($files);
foreach ($files as $file) {
include ($file);
}
foreach (array_slice($files, 0, 10) as $file) {
include ($file);
}
- shuffle($files);
- foreach ($files as $file) {
+ foreach (array_rand($files, 10) as $file) {
include ($file);
}
Но array_rand не подойдет, если нужно сделать некую пагинацию (выводить первые 10 случайных файлов, затем следующие 10 других случайных файлов и в итоге вывести все файлы в случайном порядке, а затем поменять порядок и снова выводить по 10). Подход с array_slice позволит сделать такую пагинацию. $datetime = new DateTime($user_reg);
+ $formatter = new IntlDateFormatter('ru_RU');
+ $formatter->setPattern('d MMM, Y');
- echo $datetime->format('F j, Y');
+ echo $formatter->format($datetime);
if (!str_contains($url, '/info/') && !str_contains($url, '/news/')) {
echo 'вывод содержимого';
} else {
echo 'вывод содержимого';
}
$str = "$status['Совершенно_новое'] = 'Brand_new<br>New'";
$pattern = "(?<=\$status\[')([а-яА-ЯёЁa-zA-Z]+?.*')([A-za-z]+?.*)(?=')";
preg_match($patern, $str, $matches);
var_dump($matches);
// полный match и группы
\$status\['([^']+)'\][^']*'([^']*)'
?>
и писать чистый HTML, можно посреди HTML открыть PHP тег <?php
и воспользоваться языком, например вывести HTML в цикле (опять же, закрыв тег после начала цикла), или использовать переменную как значение, или выводить HTML по условию.тут всякие визуальные уточнения страницы; форма, css специфика для страницыcss стоит писать отдельно и подключать как файл/файлы, для формы будет отдельный шаблон
тут всякие оперативные реакции на действия в браузере требуемые страницей.js тоже стоит писать отдельно и подключать как файл/файлы
- $ref_system = $pdo->prepare("SELECT * FROM `db_ref_system` GROUP BY `rs_type` ORDER BY `id` ASC");
+ $ref_system = $pdo->prepare("SELECT * FROM `db_ref_system` ORDER BY `id` ASC");
<?php
$all = $ref_system->fetchAll();
$plc = array_filter($all, fn ($fields) => $fields['rs_type'] === 'plc');
$deposit = array_filter($all, fn ($fields) => $fields['rs_type'] === 'deposit');
$offer = array_filter($all, fn ($fields) => $fields['rs_type'] === 'offer');
?>
<?php foreach ([$plc, $deposit, $offer] as $level => $data): ?>
<div class="col-md-4 col-12 mb-lg-0 mb-4">
<div class="fw-bold h5 mb-3">
<?= $level + 1 ?>-й уровень
</div>
<?php foreach($data as $ref) : ?>
<div class="mb-4">
<span class="text-muted fw-semibold"><?=$ref['rs_type']?></span>
<div>
<div class="d-flex align-items-center pt-2">
<div class="progress w-100">
<div class="progress-bar bg-warning" role="progressbar" style="width: 100%;" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<span class="ms-3 fw-bold text-warning"><?=$ref['rs_percent']?>%</span>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
<?php endforeach; ?>
\Bitrix\Main\XmlWriter
, то с его помощью - никак.class AppXmlWriter extends XmlWriter
{
private $file = '';
private $charset = '';
private $tab = 0;
private $f = null;
private $lowercaseTag = false;
private $errors = array();
// конструктор скопирован, т.к. там все private
public function __construct(array $params)
{
if (isset($params['file']))
{
$server = \Bitrix\Main\Application::getInstance()->getContext()->getServer();
$this->file = $server->getDocumentRoot() . trim($params['file']);
// create new file
if (
isset($params['create_file']) &&
$params['create_file'] === true &&
is_writable($this->file)
)
{
unlink($this->file);
}
}
if (isset($params['charset']))
{
$this->charset = trim($params['charset']);
}
else
{
$this->charset = SITE_CHARSET;
}
if (isset($params['lowercase']) && $params['lowercase'] === true)
{
$this->lowercaseTag = true;
}
if (isset($params['tab']))
{
$this->tab = (int)$params['tab'];
}
}
public function prepareAttributes(array $attributes): string
{
$result = '';
if (empty($attributes)) {
return $result;
}
foreach ($attributes as $key => $value) {
$result .= sprintf(' %s="%s"', $key, $value);
}
return $result;
}
public function writeBeginTag($code, array $attributes = [])
{
if (!$this->f) {
return;
}
fwrite($this->f, str_repeat("\t", $this->tab) . '<' . $this->prepareTag($code) . $this->prepareAttributes($attributes) . '>' . PHP_EOL);
$this->tab++;
}
public function writeFullTag($code, $value, array $attributes = [])
{
if (!$this->f) {
return;
}
$code = $this->prepareTag($code);
$codeAttributes = $this->prepareAttributes($attributes);
fwrite($this->f,
str_repeat("\t", $this->tab) .
(
trim($value) == ''
? '<' . $code . $codeAttributes . ' />' . PHP_EOL
: '<' . $code . $codeAttributes . '>' .
$this->prepareValue($value) .
'</' . $code . '>' . PHP_EOL
)
);
}
}
)">
после span
идут, href
не назначен (переменная вызывается, в которой массив, а ключ массива отсутствует и php не закрывается).<a href="<?=$arSection["SECTION_PAGE_UR"]?>" data-bx-app-ex-href="<?=$arSection["SECTION_PAGE_UR"]?>" class="section">
<div class="section__picture">
<?
$picture = SITE_TEMPLATE_PATH.'/img/no_photo.png';
if ($arSection["PICTURE"] != ""){
$picture = CFile::ResizeImageGet($arSection["PICTURE"], Array("height" => 175))["src"];
}
?>
<div style="background-image:url('<span id=" title="Код PHP: <?=$picture;?>" class="bxhtmled-surrogate">
<span class="bxhtmled-surrogate-inner"><span class="bxhtmled-right-side-item-icon"></span><span class="bxhtmled-comp-lable" unselectable="on" spellcheck="false">Код PHP</span></span>
</div>
<div class="section__icon">
<i class="far fa-sign-in"></i>
</div>
</div>
<div class="section__main">
<?=$arSection["NAME"];?>
</div>
</a>
</div>
<?
if ($s > 5)
break;
$s++;?> <?endforeach;?>
</div>
<?if (count($arSections) > 6):?>
<div class="button-line">
<a href="/katalog/" class="button button_black wstyle wstyle_white">Посмотреть все категории</a>
</div>
<?endif;?>
</div>
<?endif;?> <?
$iblock_id = 4;
$arServices = Array();
$arFilterE = Array("IBLOCK_ID" => $iblock_id, "ACTIVE" => "Y");
$arSelectE = Array("IBLOCK_ID", "ID", "NAME", "PREVIEW_PICTURE");
$rsElement = CIBlockElement::GetList(
Array("SORT"=>"ASC"),
$arFilterE,
false,
false,
$arSelectE
);
while($arElement = $rsElement->GetNextElement()){
$arFieldsE = $arElement->GetFields();
$arServices[] = $arFieldsE;
}
?> <?if (count($arServices) > 0):?>
<div class="block block_border">
<div class="title title_center">
Популярные услуги
</div>
<div class="row">
<?$s = 1;?> <?foreach ($arServices as $arService):?>
<div class="col-lg-4">
<a href="<?=$arService["DETAIL_PAGE_URL"]?>" data-bx-app-ex-href="<?=$arService["DETAIL_PAGE_URL"];?>" class="section section_wtitle">
<div class="section__picture">
<?
$picture = SITE_TEMPLATE_PATH.'/img/no_photo.png';
if ($arService["PREVIEW_PICTURE"] != ""){
$picture = CFile::ResizeImageGet($arService["PREVIEW_PICTURE"], Array("height" => 200))["src"];
}
?>
<div style="background-image:url('<span id=" title="Код PHP: <?=$picture;?>" class="bxhtmled-surrogate">
<span class="bxhtmled-surrogate-inner"><span class="bxhtmled-right-side-item-icon"></span><span class="bxhtmled-comp-lable" unselectable="on" spellcheck="false">Код PHP</span></span>
</div>
<div class="section__title">
<?=$arService["NAME"];?>
</div>
</div>
</a>
Одиакового ничего, идея скорее всего выводить по идексу в массиве
<?php foreach ($arItem['PROPERTIES']['IMG_BEFORE']['VALUE'] as $index => $arImgBeforeSrc): ?>
<?php $arImgAfterSrc = $arItem['PROPERTIES']['IMG_AFTER']['VALUE'][$index] ?>
<div class="cocoen">
<img data-src="" class="blog-list__item-image<?=($arParams['ROUNDED_IMAGE'] ? ' rounded' : '');?>" src="<?=CFile::getPath($arImgBeforeSrc);?>" alt="">
<img data-src="" class="blog-list__item-image<?=($arParams['ROUNDED_IMAGE'] ? ' rounded' : '');?>" src="<?=CFile::getPath($arImgAfterSrc);?>" alt="">
</div>
<?php endforeach ?>
$arImgAfterSrc
проверку сделать. async function openModal(id = 0){
if(!id){
return;
}
const response = await fetch(`library.php?id=${id}`);
const responseText = await response.text();
// Дальше делайте манипуляции с модальным окном и полученными данными
}
$str = '
текст текст текст текст текст
<tr><td>Габариты заводской упаковки (длина, ширина, высота): <b>35 x 16 x 9</b> см. </td></tr>
<tr><td>Габариты упаковочной коробки (длина, ширина, высота): <b>40 x 21 x 14</b> см. </td></tr>
текст текст текст текст текст
';
preg_match('/Габариты упаковочной коробки.*<b>(.*)<\/b>/', $str, $matches);
$value = array_key_exists(1, $matches) ? $matches[1] : null;
var_dump($value);
// 40 x 21 x 14