<?php
$emails = [
'test@mail.com', 'te.st@mail.com', 'test+test@mail.com'
];
foreach($emails as $email) {
echo $email.' -> '.normalize_email($email)."\n";
}
//test@mail.com -> test@mail.com
//te.st@mail.com -> test@mail.com
//test+test@mail.com -> test@mail.com
function normalize_email(string $email): string
{
$email = mb_strtolower($email);
$email_parts = explode('@', $email, 2);
//для случаев email+чтоугодно@mail.com
if(str_contains($email_parts[0], '+')) {
$ex = explode('+', $email_parts[0]);
$email_parts[0] = end($ex);
}
$email_parts[0] = preg_replace('![^a-zA-Z0-9а-яА-ЯёË]+!u', '', $email_parts[0]);
return $email_parts[0].'@'.$email_parts[1];
}
file_put_contents(APP_PATH . '/conf/uniq_id.txt', $numb);
//логируем стек вызовов
ob_start();
debug_print_backtrace();
$trace = ob_get_contents();
ob_end_clean();
file_put_contents(APP_PATH . '/conf/backtrace.txt', $trace, FILE_APPEND);
increment
и decrement
для изменеия балансаpublic function updateBalance($bet_amount): void
{
$this->decrement('balance', $bet_amount);
}
UPDATE `users` SET `balance` = `balance` - $bet_amount WHERE id = ...
lockForUpdate()
чтобы исключить любые конфликты на уровне БД и тогда redis-локи в принципе можно убрать. try_files
location / {
try_files $uri $uri/ /index.php?$query_string;
}
$_SERVER['REQUEST_URI']
prepareForValidation()
https://promokod.pikabu.ru/shops/5ka
curl -L -I "https://promokod.pikabu.ru/shops/5ka"
HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
Cache-Control: no-cache, private
Date: Fri, 06 Oct 2023 12:56:29 GMT
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58
Set-Cookie: XSRF-TOKEN=eyJpdiI6ImZuTllpTWRIb2ZDalF5.......TkyOWY3In0%3D; expires=Fri, 13-Oct-2023 12:56:29 GMT; Max-Age=604800; path=/
<?php
$arr_seo = [ 5 => [ 'term_id' => 1680, 'perc' => 50 ], 6 =>[ 'term_id' => 1114, 'perc' => 27]];
$max_perc = 0;
$max_term_id = 0;
foreach($arr_seo as $key => $row) {
if($row['perc'] > $max_perc) {
$max_perc = $row['perc'];
$max_term_id = $row['term_id'];
}
}
var_dump($max_term_id);
<?php
$html = <<<HTML
<p class="p-1">p1</p><p class="p-2">p2</p>
<div class="wrap"><p class="p-3">p3</p></div><p class="p-4">p4</p><p class="p-5">p5</p>
HTML;
preg_match_all('!<p[^>]{0,}>(.*?)</p>!si', $html, $out);
var_dump($out[0][3]);
$out[1][3]