PHP
5
Вклад в тег
sudo apt-get purge virtualbox*
sudo apt-get autoremove
php artisan make:model RedirectSetting -m
.....
public function up()
{
Schema::create('redirect_settings', function (Blueprint $table) {
$table->increments('id');
$table->string('old_url',500);
$table->string('new_url',500);
$table->timestamps();
});
}
.....
<?php
namespace App\Http\Middleware;
use Illuminate\Http\RedirectResponse;
use App\RedirectSetting;
use Closure;
class RedirectUrl2Another
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
*
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
$url = $request->getRequestUri();
$redirect = RedirectSetting::where('old_url',$url)->first();
if($redirect&&($redirect->new_url!='')){
return redirect($redirect->new_url,301);
}
return $next($request);
}
}
....
protected $middleware = [
\App\Http\Middleware\RedirectUrl2Another::class,
.....
{Market_place}searchText=Смартфон|searchPhrase=Купить Смартфон Xiaomi{/Market_place}
.createWidget({
"containerId": "marketWidget[__counter]",
"type": "offers",
"params": {
"searchText": "[[searchText]]",
"searchPhrase": "[[searchPhrase]]",
"themeId": 2
}
});
/* Функция берет текст публикации ,
* собрает из нее метки рекламного скрипта с параметрами
* Параметры подставляет в тело скрипта
* Полученный текст скрипта подставляет на место метки в публикации
* $body - текст публикации
* $script_identificator - идентификатор скрипта
* $script - сам программный код рекламного скрипта
* */
protected function injectAdScript($body, $script_identificator, $script){
// составляем строку для сбора всех меток для нашего скрипта
$preg_str = '~{'.$script_identificator.'}([^{]*){/'.$script_identificator.'}~i';
// собираем все метки скрипта из текста публикации в переменную $match.
// $match[0] массив полных текстов меток. например {Market_place}SearchText=Смартфон|SearchPhrase=Купить Смартфон Xiaomi{/Market_place}
// $match[1] массив урезанных меток. Например SearchText=Смартфон|SearchPhrase=Купить Смартфон Xiaomi
preg_match_all($preg_str, $body, $match);
$search = []; // Здесь будем хранить массив полных текстов меток
$replace = [];// Здесь будем хранить текст скрипта с подставленными значениями меток
$counter = 0;// в некоторых скриптах необходимо проставлять его порядковый номер. Как параметр в тексте должен быть обозначен [__counter]
foreach($match[1] as $key_match=>$str_params){
$counter++;
$tmparr = explode('|',$str_params);
$mutated_str = $script;
// в цикле заменяем все найденные параметры их значениями
foreach($tmparr as $one_param){
$tmp_param = explode('=',$one_param);
$mutated_str = str_replace('[['.$tmp_param[0].']]',$tmp_param[1],$mutated_str);
}
$search[] = $match[0][$key_match];
$replace[] = str_replace('[__counter]',$counter,$mutated_str); //сразу проставим порядковые номера
}
// заменяем метки в тексте на преобразованные скрипты
return str_replace($search,$replace,$body);
}