 
      
    PHP
    5
    Вклад в тег
    
      
      
    
  
  
sudo apt-get purge virtualbox* 
sudo apt-get autoremovephp 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);
	}