php скрипт сокращения ссылок

При sms рассылках важен размер ссылки, которая будет в тексте сообщения.

В базе данных создается отдельная таблица для хранения короткого урла, и соответствующего ему длинного.

В данную таблицу происходит запись по определенному событию:

function generateRandomString($length = 3) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[random_int(0, $charactersLength - 1)];
    }
    return $randomString;
}
$short_url = generateRandomString();	
global $wpdb;
$table_name = $wpdb->prefix.'urls';
$data = ['url' => $long_url, 'short_url' => $short_url];
$wpdb->insert($table_name, $data);

Читать далее «php скрипт сокращения ссылок»

Сравнить поля в xml файлах

$i=0;
$array_id_old_feed = [];
$array_id_new_feed = [];
$xml = simplexml_load_file('VBHy6J9p0cSJyNpgzftWAyeemploypsg.xml');

$p_cnt = count($xml->channel->item);
echo 'Count for item old feed: '.$p_cnt.'<br/>';
foreach ($xml->channel->item as $value){
    $i++;
	//echo $i.' '.$value->id . '<br/>';
	array_push($array_id_old_feed ,strval($value->id));	
} 

$xml = simplexml_load_file('E-Commerce_Product_List.xml');
$p_cnt = count($xml->channel->item);
echo 'Count for item new feed: '.$p_cnt.'<br/>';
$i=0;
foreach ($xml->channel->item as $value){
	$i++;
  //  echo $i.' '.$value->id . '<br/>';
	array_push($array_id_new_feed ,strval($value->id));	
}
$i=0;
echo '<br/>Search differnce id between old and new<br/>';
foreach($array_id_old_feed as $array_id_old_feed_item){
	//var_dump(in_array($array_id_old_feed_item, $array_id_new_feed));
	if(!in_array($array_id_old_feed_item, $array_id_new_feed)){
		$i++;
		echo '<br/>'.$i.' '.$array_id_old_feed_item;		
	}
}
echo '<br/>'.$i.' differences finded between old and new<br/>';
echo '<br/>Search differnce id between new and old<br/>';
$i=0;
foreach($array_id_new_feed as $array_id_new_feed_item){
	//var_dump(!in_array($array_id_new_feed_item, $array_id_old_feed));
	if(!in_array($array_id_new_feed_item, $array_id_old_feed)){
		$i++;
		echo '<br/>'.$i.' '.$array_id_new_feed_item;		
	}
}
echo '<br/>'.$i.' differences finded between new and old<br/>';

Заглушка вместо битых изображений сайта

Для того, чтобы битые изображения заменить стандартной картинкой-заглушкой необходимо поместить данный код в начало 404.php вашей темы вордпресс.

//If they have tried to access an invalid image file, return a 404 image
if ( preg_match( '~\.(jpe?g|png|gif|svg|bmp)(\?.*)?$~i', $_SERVER['REQUEST_URI']))
{
        $image404 = locate_template('images/404.png');
        if (!is_null($image404))
        {
                $fp = fopen($image404, 'rb');
                header( 'Content-Type: image/png' );
                header( 'Content-Length: ' . filesize($image404));
                fpassthru($fp);
        }
        exit;
}

 

Заменить битые картинки на заглушку

Решение только для сайтов на вордпресс. Код разместить в файле 404.php текущей темы оформления:

<?php
header("HTTP/1.0 404 Not Found");

if (isset($_SERVER['REQUEST_URI']) && preg_match("/(jpg|jpeg|gif|png)$/", $_SERVER['REQUEST_URI']))
{

$src = "noimage.png";
$image = imagecreatefrompng($src);
header("Content-type: image/png");
imagepng($image);
}
get_header();
?>
<style>
.page_404 {
    min-height: 80vh;
    font-size: 42px;
    display: flex;
    justify-content: center;
    align-items: center;
}
</style>
<div class="page_404">
    Page Not Found
</div>
<?php
get_footer();?>

 

 

Проверка пинга страниц из csv файла

Данный код php разместить в корне сайта, выводит только список страниц у которых код ответа не 200. В том числе страницы с редиректом.

<?php
set_time_limit(0);
$urls = [];
if (($handle = fopen("pages2.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        if($data[0] == "#") continue;
        $url = $data[0];
        $urls[] = $url;
    }
    fclose($handle);
}

$mh = curl_multi_init();
$ch = [];
foreach ($urls as $k => $url) {
    $ch[$k] = curl_init($url);
    curl_setopt($ch[$k], CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($mh,$ch[$k]);
}

do {
    curl_multi_exec($mh, $running);
    curl_multi_select($mh);
} while ($running > 0);

foreach(array_keys($ch) as $key) {
    // Проверяем наличие ошибок
    if (!curl_errno($ch[$key])) {
        switch ($http_code = curl_getinfo($ch[$key], CURLINFO_HTTP_CODE)) {
            case 200:  /*echo 'Код HTTP: ' . $http_code . ' - <a href='.$urls[$key].'>'.$urls[$key].'</a><br />'; # OK*/
                break;
            default:
                echo 'Неожиданный код HTTP: ' . $http_code . ' - <a href='.$urls[$key].'>'.$urls[$key].'</a><br />';
            break;    
        }
    }
    curl_multi_remove_handle($mh, $ch[$key]);
}
curl_multi_close($mh);