Перейти к содержанию

Рекомендуемые сообщения

Видео и превю с youtube

if( preg_match('/[http|https]+:\/\/(?:www\.|)youtube\.com\/watch\?(?:.*)?v=([a-zA-Z0-9_\-]+)/i', $link, $matches) || 
    preg_match('/[http|https]+:\/\/(?:www\.|)youtube\.com\/embed\/([a-zA-Z0-9_\-]+)/i', $link, $matches) ||
    preg_match('/[http|https]+:\/\/(?:www\.|)youtu\.be\/([a-zA-Z0-9_\-]+)/i', $link, $matches)
) {
					
	$thumb = 'http://img.youtube.com/vi/'   . $matches[1] . '/0.jpg';
	$video = 'http://www.youtube.com/embed/'. $matches[1];
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Склонения

public function declensionRus ($n, array $lang, $zero = '') {
    if ( $n == 0 ) return $n . $zero;

    if ( ($n % 10 == 1) && ($n % 100 != 11) ) { 
      $idx = 0; 
	} elseif ( ($n % 10 >= 2) && ($n % 10 <= 4) && (($n % 100 < 10) || ($n % 100 >= 20)) ) {  
	  $idx = 1; 
    } else { 
	  $idx = 2;
    }

	return isset($lang[$idx]) ? $n . $lang[$idx] : $n;
}
declensionRus($result['reviews'], [' отзыв', ' отзыва', ' отзывов'], ' отзывов');

 

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Быстро сменить префикс таблиц в БД

/* 
	1. создать файл rename_table.php с содержимым ниже кодом 
	2. запустить и дождаться завершения процесса http://domain/rename_table.php
	3. радуемся и удаляем файл rename_table.php
*/

<?php

$old_prefix = 'oldprefix_';
$new_prefix = 'newprefix_';

header('Content-type: text/plain');

require_once('config.php');

// Для версий выше 1.5.*
// require_once(DIR_SYSTEM . 'library/db/mpdo.php');
// require_once(DIR_SYSTEM . 'library/db/mssql.php');
// require_once(DIR_SYSTEM . 'library/db/mysql.php');
// require_once(DIR_SYSTEM . 'library/db/mysqli.php');
// require_once(DIR_SYSTEM . 'library/db/postgre.php');

require_once(DIR_SYSTEM . 'library/db.php');

$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

$query = $db->query('SHOW TABLES');

if ($query->num_rows) {
	foreach ($query->rows as $row) {
		$table   = current($row);
		
		$new_table = '';

		if($old_prefix){
			if(strpos($table, $old_prefix) === 0){
				$new_table = $new_prefix . substr($table, strlen($old_prefix));
			}
		} else {
			$new_table = $new_prefix . $table;
		}

		if($new_table){
			$db->query("ALTER TABLE `{$table}` RENAME TO `{$new_table}`");
			echo "RENAME TABLE {$new_table}\n";
		}
	}
}

die('The process is completed.');

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
<?php
try {
    //Здесь указывается данные базы в которую загружаем
    $db_alm = new PDO('mysql:host=localhost;dbname=db1', 'db_user1', 'password1');
    $db_alm->exec("SET CHARACTER SET utf8");

    //Здесь указывается база из которой берем
    $db = new PDO('mysql:host=localhost;dbname=db2', 'db_user2', 'password2');
    $db->exec("SET CHARACTER SET utf8");

    $lists = [];
    foreach($db_alm->query('SELECT email from oc_customer') as $row) {
        $lists[] = $row['email'];
    }

    $listRows = [];
    foreach($db->query('SELECT * from oc_customer') as $row) {
        $listRows[] = $row;
    }

    $i=0;
    $k=0;
    foreach ($listRows as $row) {
      $flag = false;
      foreach ($lists as $list) {
        //
        if($row['email'] == $list){
          $flag = true;
          $k++;
        }
      }

      if(!$flag){

        $sql = "INSERT INTO `oc_customer` (`store_id`,`firstname`, `lastname`, `email`, `telephone`,`password`,`salt`,`cart`,`wishlist`,`newsletter`,`address_id`, `customer_group_id`,`ip`, `status`, `approved`,`token`, `date_added`) VALUES (5,'".$row['firstname']."','".$row['lastname']."' , '".$row['email']."', '".$row['telephone']."','".$row['password']."','".$row['salt']."','".$row['cart']."','".$row['wishlist']."','".$row['newsletter']."',0, '".$row['customer_group_id']."','".$row['ip']."', '".$row['status']."', '".$row['approved']."','".$row['token']."', '".$row['date_added']."' )";
        $db_alm->query($sql);

        $customer_id = $db_alm->lastInsertId();
        $address = [];
        foreach($db->query('SELECT * from oc_address where address_id = '.$row['address_id'].' ') as $rowAddress) {
            $address[] = $rowAddress;
        }

        $sql_address = "INSERT INTO `oc_address` (`customer_id`, `firstname`, `lastname`, `company`,`company_id`,`tax_id`,`address_1`,`address_2`,`city`,`postcode`, `country_id`,`zone_id`) VALUES ('".$customer_id."','".$address[0]['firstname']."' , '".$address[0]['lastname']."', '".$address[0]['company']."','".$address[0]['company_id']."','".$address[0]['tax_id']."','".$address[0]['address_1']."','".$address[0]['address_2']."','".$address[0]['city']."','".$address[0]['postcode']."','".$address[0]['country_id']."', '".$address[0]['zone_id']."' )";
        $db_alm->query($sql_address);

        $address_id = $db_alm->lastInsertId();
        $sql_customer_update = "UPDATE oc_customer SET address_id = ".$address_id." WHERE customer_id = ".$customer_id." ";
        $db_alm->query($sql_customer_update);

        $i++;
        if($i == 200){break;}
      }
    }

    print_r('<br>i = '.$i.', k ='.$k.', lastInsertId = '.$db_alm->lastInsertId());

    $db = null;
    $db_alm = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>

 

Берем пользователей с адресом из одной базы и вставляем в другую

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Указать [alt] для тега <img .. /> в каком-то html.

При желании, можно расширить способности этой функции до указания конкретному изображению свой alt.

public function setImgAlt($html, $alt) {
  $doc = new DOMDocument();

  $doc->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);

  $tags = $doc->getElementsByTagName('img');

  foreach ($tags as $key => $tag) {
    if (!$tag->hasAttribute('alt') || empty($tag->getAttribute('alt'))) {
      if ($key > 0) {
        $alt .= '-' . $key;
      }

      $tag->setAttribute('alt', $alt);
    }
  }

  return $doc->saveHTML($doc->documentElement) . PHP_EOL . PHP_EOL;
}

$description = setImgAlt($description, 'Картинка не загрузилась, но у нас есть Alt!');

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Заменяем все внешние ссылки в тексте на свои с возможностью переброса на страницу редиректа

Допустим, наш домен myshop.com

$description = html_entity_decode($information_info['description'], ENT_QUOTES, 'UTF-8');

$description = preg_replace_callback('/((http|https):\/\/(?!myshop\.com)[\w\.\/\-=?&#]+)/', function($matches) {
  return $this->url->link('common/redirect', 'url=' . base64_encode($matches[0]));
}, str_replace('&amp;', '&', $description));

а common/redirect.php примерно такой:

<?php

class ControllerCommonRedirect extends Controller {
  public function index() {
    if (!empty($this->request->get['url'])) {
      $this->response->redirect(base64_decode(rawurldecode($this->request->get['url'])), '302');
    }
  }
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, SooR сказал:

Заменяем все внешние ссылки в тексте на свои с возможностью переброса на страницу редиректа

Допустим, наш домен myshop.com


$description = html_entity_decode($information_info['description'], ENT_QUOTES, 'UTF-8');

$description = preg_replace_callback('/((http|https):\/\/(?!myshop\.com)[\w\.\/\-=?&#]+)/', function($matches) {
  return $this->url->link('common/redirect', 'url=' . base64_encode($matches[0]));
}, str_replace('&amp;', '&', $description));

а common/redirect.php примерно такой:


<?php

class ControllerCommonRedirect extends Controller {
  public function index() {
    if (!empty($this->request->get['url'])) {
      $this->response->redirect(base64_decode(rawurldecode($this->request->get['url'])), '302');
    }
  }
}

 

А что будет со ссылками на йотуб, на cdn, аналитику и метрику?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.