• Как поправить htaccess для объединения 2 редиректов в 1?

    @dodo512
    RewriteCond %{REQUEST_URI} /[^/.]+$
    RewriteRule ^(.*)$ https://localhost/$1/ [R=301,L]
    
    RewriteCond %{THE_REQUEST} /index\.php [OR]
    RewriteCond %{HTTPS}       !on         [OR]
    RewriteCond %{HTTP_HOST}   ^www\.      [NC]
    RewriteRule ^(.*?)(index\.php|$) https://localhost/$1 [R=301,L]
    Ответ написан
    4 комментария
  • Как заставить отдавать pdf файлы с именами в кириллице?

    https://github.com/tecnickcom/TCPDF/blob/master/tc... тут написано, что специфические символы вырезаются. Этот библиотека лет 5 не обновлялась. Есть современный, mPDF. Но он много жрет.

    Если хочешь именно этой библиотекой пользоваться, то сохрани файл на сервере и сам отдавай

    Если прочитать документацию, то можно найти вот это:

    * @param $dest (string) Destination where to send the document. It can take one of the following values:
    • I: send the file inline to the browser (default). The plug-in is used if available. The name given by name is used when one selects the "Save as" option on the link generating the PDF.
    • D: send to the browser and force a file download with the name given by name.
    • F: save to a local server file with the name given by name.
    • S: return the document as a string (name is ignored).
    • FI: equivalent to F + I option
    • FD: equivalent to F + D option
    • E: return the document as base64 mime multi-part email attachment (RFC 2045)


    Соответственно, получаешь содержимое файла с помощью параметра S и отправляешь как тебе надо.

    Ниже пример:

    $pdfString = $pdf->Output(null, "S");
    header('Content-Type: application/pdf');
    header('Cache-Control: private, must-revalidate, post-check=0, pre-check=0, max-age=1');
    header('Pragma: public');
    header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
    header('Content-Disposition: inline; filename="имя файла на кириллице.pdf"');
    echo $pdfString;


    UPD.:
    Если хочешь, чтобы файл сразу скачивался, а не открывался в браузере, то поменяй Content-Disposition: inline; на Content-Disposition: attachment;. В принципе, про то как отдавать файлы с помощью php, можешь прочитать в просторах интернета.
    Ответ написан
    5 комментариев
  • Как разделить текст на 2 части php?

    LINKeRxUA
    @LINKeRxUA
    web dev
    Вот набросал:
    Должно розделить на 2 части.
    Определить позицию обрыва строки с конца в первой части и с начала во второй.
    По этому - определяем, какому блоку принадлежит часть текста что больше. Ну и соответственно делим
    <?php
    $text = 'aaa'.PHP_EOL.'bbbbb'.PHP_EOL.'ccccccc'.PHP_EOL.'dddd'.PHP_EOL.'eeeeeeeeeeeee'.PHP_EOL.'fff';
    
    $length = strlen($text);
    $half = (int) ($length / 2);
    
    $part_1 = substr($text,0, $half);
    $part_2 = substr($text,$half);
    
    
    
    $eol_1 = strrpos( $part_1, PHP_EOL, 0); 			// last  position from string start of first part
    $eol_2 = $half + strpos( $part_2, PHP_EOL, 0 );		// first position from string start of second part
    
    
    $shift_1 = $half - $eol_1; // char shift size till middle point of first block
    $shift_2 = $eol_2 - $half; // char shift size till middle point of last block
    	
    	if($shift_1 < $shift_2){ // PHP_EOL is closer to firts block, so larger size of block saved in second block
    
    	    $part_1 = substr($text,0,$shift_1);
    		$part_2 = substr($text,$shift_1);
    	
    	}else{	
    		
    		$part_1 = substr($text,0,$eol_1);
    		$part_2 = substr($text,$eol_1);
    		
    	}
    echo '<pre>';
    var_dump( array(
    	'length' 		=> $length, 
    	'middle point' 	=> $half, 
    	'position of EOL of first block' => $eol_1,
    	'position of EOL of second block' => $half + $eol_2,
    	
    ) );
    var_dump( $part_1, $part_2 );
    
    ?>
    Ответ написан
    4 комментария
  • Как выделить из iframe youtube ссылку?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    php.net/manual/ru/function.preg-match.php
    Сама регулярка
    /(https?:\/\/www\.youtube\.com\/embed\/\w+)/
    Ответ написан
    Комментировать
  • Как отфильтровать массив php по регулярному выражению?

    Dry7
    @Dry7
    Web разработчик
    Да сделайте обычным перебором, хоть не особенно красиво, но работает

    $array=Array
    (
    0 => 'Куртка Waterproof-01.jpg',
    1 => 'Куртка Waterproof-02.jpg',
    2 => 'Куртка Waterproof-03.jpg',
    3 => 'Куртка Water Mod-01.jpg',
    4 => 'Куртка Water Mod-02.jpg'
    );
    
    $new = [];
    
    foreach ($array as $el) {
    	@$new[preg_replace('/[\-0-9]/i', '', $el)][] = $el;
    }
    
    echo '<pre>';
    print_r($new);
    echo '</pre>';
    Ответ написан
    Комментировать