Забыли пароль?
Запросите новый здесь.

Автор темы: Vveb--ws
ID темы: 2936
Информация:
Тема содержит 16 сообщения, была просмотрена 55144 раз.  Имеются прикрепленные файлы.
Просмотр темы
PHP-Fusion Russia » Поддержка 7 версии » Пожелания и предложения
 Распечатать тему
какие функции надо переписать для PHP 7?
Vveb--ws
привет

какие функции надо переписать для PHP 7?

кто в курсе дайте инфу

сегодня у клиента сайт перестал работать из-за того что кто-то включил php 7.1
а именно не работало соединение с БД

 
Web
Polarfox
мускл устарело и обсолете, и было отключено?


Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
 
hungel
Замени свой maincore на приатаченный.
Если в твоем maincore есть нужные тебе изменения то замени в нем функции работы с БД.
Если нужно устанавливать систему на PHP 7, аналогично берем функции работы с БД и заменяем в setup.php

hungel присоединено следующее:файл:
maincore_1.zip [9.29кБ / 703 Загрузки]
x1
 
Vveb--ws
огромное спасибо!

а кроме функций по работе с БД ничего менять не надо в PHP-Fusion?



PHP-Fusion 7 Bogatyr - бесплатная мультиязычная CMS для блога, форума, фотогалереи

vk.com/phpfusion
Создаю интернет-магазины и блоги, лендинги, форумы. Telegram: t.me/Vova_Kazakov
 
Web
hungel
Насколько я знаю остальное должно работать.
Некоторые функции могли устареть и могут возникнуть notice, о необходимости замены некоторых функций.
Рекомендую озаботиться этим заранее и включить отображение или логирование notice, ибо через пару обновлений разработчики PHP могут исключить эти функции и тогда они совсем перестанут работать.

 
Dave
Если в твоем maincore есть нужные тебе изменения то замени в нем функции работы с БД.
Если нужно устанавливать систему на PHP 7, аналогично берем функции работы с БД и заменяем в setup.php


Уважаемый hungel Можно чуть подробнее?
Думаю многие будут благодарны, не все ещё эксперты..ab


Если перебрал - задрай переборки.
 
hungel
Нужно заменить функции которые работают с БД.
Дело в том, что новый PHP больше не умеет работать с mysql. Этих функций просто больше нет. Под mysql я подразумеваю не базу данных как таковую а драйвер базы. Для работы с базой теперь используются мало отличающиеся функции mysqli. В большинстве случаев нужно просто добавить к функции букву i, но есть и исключения.

Например вот старая функция
Скачать исходники  Код
function dbquery($query) {
   global $mysql_queries_count, $mysql_queries_time; $mysql_queries_count++;

   $query_time = get_microtime();
   $result = @mysql_query($query);
   $query_time = substr((get_microtime() - $query_time),0,7);

   $mysql_queries_time[$mysql_queries_count] = array($query_time, $query);
   
   if (!$result) {
      echo mysql_error();
      return false;
   } else {
      return $result;
   }
}




А вот новая.

Скачать исходники  Код
function dbquery($query) {
   global $mysql_queries_count, $db_connect, $mysql_queries_time; $mysql_queries_count++;

   $query_time = get_microtime();
   $result = @mysqli_query($db_connect, $query);
   $query_time = substr((get_microtime() - $query_time),0,7);

   $mysql_queries_time[$mysql_queries_count] = array($query_time, $query);
   
   if (!$result) {
      //echo mysqli_error($db_connect);
      return false;
   } else {
      return $result;
   }
}




По сути изменений минимум.
Так, вот если вы, дописывали в файл maincore.php что-то свое или добавляли чужое, без того, что вы добавляли вероятнее всего у вас перестанет, что-то работать. Чтобы этого не случилось нужно не просто заменить весь файл, а только поменять функции работы с БД. Если в вашем maincore изменений нет, то можно просто заменить файл.

Если вы хотите, установить стоковый PHP-Fusion на сервер с PHP7 то нужно заменить функции работы с БД не только в minecore, но и в файле setup.php. Функции работы с БД в этих файлах одинаковые.

Собственно сами функции начинаются с комментария // MySQL database functions

 
Vveb--ws
Что делать по порядку:

1) В файле maincore.php (PHP-Fusion 7) или maincore_db.php (PHP-Fusion 7 Bogatyr) есть строка:
Скачать исходники  Код
// Establish mySQL database connection
$link = dbconnect($db_host, $db_user, $db_pass, $db_name);




2) Для каждой функции, работющей с БД, добавляем в global переменную $db_connect;
Скачать исходники  Код
function *****(…) {
   global $db_connect;




3) Для функций начинающихся с "mysql_" делаем автозамену по всем PHP-файлам на "mysqli_".
Проверяем существование новых функций.

4) Для некоторых функций, работющих с БД, добавляем первым аргументом $db_connect
Можно через автозамену согласно таблице:
mysql_query( --> mysqli_query($db_connect,
mysql_select_db( --> mysqli_select_db($db_connect,
mysql_real_escape_string( --> mysqli_real_escape_string($db_connect,
mysql_close() --> mysqli_close($db_connect)
mysql_error() --> mysqli_error($db_connect)
mysql_get_server_info() --> mysqli_get_server_info($db_connect)
mysql_affected_rows() --> mysqli_affected_rows($db_connect)


mysqli_close() вместо mysql_close() находится в /themes/templates/footer.php

внимательно смотрим примеры где добавляется $link (в нашей cms - $db_connect)
mysqli_affected_rows - https://www.php.net/manual/ru/mysqli.affected-rows.php
Процедурный стиль
Скачать исходники  Код
<?php
$db_connect = mysqli_connect("localhost", "my_user", "my_password", "world");

mysqli_query($db_connect, "CREATE TABLE Language SELECT * from CountryLanguage");

printf("Затронутые строки (INSERT): %d\n", mysqli_affected_rows($db_connect));

mysqli_close($db_connect);
?>




mysqli_close - https://www.php.net/manual/ru/mysqli.close.php

Для PHP-Fusion функция выгялит так:
Скачать исходники  Код
function dbconnect($db_host, $db_user, $db_pass, $db_name) {
   global $db_connect, $db_charset;
   $db_connect = @mysqli_connect($db_host, $db_user, $db_pass, $db_name);
   mysqli_query($db_connect, "SET NAMES '".$db_charset."'"); //
   if (!$db_connect) {
      die("<strong>Unable to establish connection to MySQL</strong><br />".mysqli_errno($db_connect)." : ".mysqli_error($db_connect));
   }
}




продолжение следует.
это конечно же не все изменения

вместо замены
mysql_close() --> mysqli_close($link)
mysql_insert_id() --> mysqli_insert_id($link)

я создал 2 пользовательские функции
Скачать исходники  Код
function dbclose()  {
            global  $db_connect;
            @mysqli_close($db_connect);  // @mysql_close();
}
 
function dbinsertid()  {
            global  $db_connect;
            return @mysqli_insert_id($db_connect); // return @mysql_insert_id();
}



соответственно в коде замена будет:
mysql_close() --> dbclose()
mysql_insert_id() --> dbinsertid()


Подключение файла для работы с БД
у меня на хостинге PHP_VERSION=7.0.33-0+deb9u7 и она НЕработает в version_compare()
чтобы работало в PHP5 и PHP7
Скачать исходники  Код
if (strpos("_".PHP_VERSION, '-', 0)>0) {
   define("PHP_VERSION_NUBMER", substr(PHP_VERSION, 0, strpos(PHP_VERSION, '-', 0) ));
} else {
   define("PHP_VERSION_NUBMER", PHP_VERSION);
}

   // ФУНКЦИИ ПОДКЛЮЧЕНИЯ К БД
   if (version_compare(PHP_VERSION_NUBMER, '7.0.0') >= 0) { //  MySQLi
   // if (version_compare(PHP_VERSION_NUBMER, '7.0.0', '>=')) {  // MySQLi     
        require_once "../landing-main/db_maincore_php7.php";
        // echo 'Я использую PHP версии не ниже 7.0.0, моя версия: ' . PHP_VERSION . "\n";
    } else {    //  MySQL
        require_once  "../landing-main/db_maincore_php5.php";
   }




пути для require_once конечно же у вас будут другие

Принципиальное отличие:
Скачать исходники  Код
// Функция заменяет отсутствующую в MySqli функцию mysql_result
function mysqli_result($res,$row=0,$col=0){
    $numrows = mysqli_num_rows($res);
    if ($numrows && $row <= ($numrows-1) && $row >=0){
        mysqli_data_seek($res,$row);
        $resrow = (is_numeric($col)) ? mysqli_fetch_row($res) : mysqli_fetch_assoc($res);
        if (isset($resrow[$col])){
            return $resrow[$col];
        }
    }
    return false;
}




в архиве все функции.
БД уже работает и в PHP5 и в PHP7 в частности на 1and.ru
очень помог hungel файл: maincore_1.zip [9.29кБ]

строковые функции неработающие в PHP7 я сделаю похже.

Объединено 07.06.2020 15:29:
Месяц назад я перевёл CMS одностраничника на PHP7
(скрипт подключения к БД одинаковый и взят из PHP-Fusion).
всё работает. ураааааааааааааааааа
Режим работы PHP: CGI
Версия PHP: 7.4.3 (alt)

мне сказали что PHP: 7.4.3 (alt) быстрее чем PHP 7.0 native

однако чтобы перевести PHP-Fusion необходимо перевести кучу функций из редактора TinyMCE которые отключены выше PHP 5.3 или PHP 5.2

есть ли какой-то другой визуальный редактор чтобы было удобно редактировать текст и вставлять в текст картинки ил папки /images/ ?
редактор должен быть 100% рабочий удобный и без самовольного редактирования вставленного HTML-кода.
или всё же переписывать TinyMCE ?
загрузка картинок в редакторе не важна. можно через админку PHP-Fusion.

Vveb--ws присоединено следующее:файл:
db-php5-php7.zip [4.14кБ / 430 Загрузки]

Изменил(а) Vveb--ws, 17.06.2020 11:57

PHP-Fusion 7 Bogatyr - бесплатная мультиязычная CMS для блога, форума, фотогалереи

vk.com/phpfusion
Создаю интернет-магазины и блоги, лендинги, форумы. Telegram: t.me/Vova_Kazakov
 
Web
SchreiBear
Vveb--ws, так проще эффект тот же :D


Загрузить источник  GeSHi: PHP
  1. function dbconnect($db_host, $db_user, $db_pass, $db_name) {
  2. global $db_connect, $db_charset;
  3. $db_connect = @mysqli_connect($db_host, $db_user, $db_pass, $db_name) or die("<strong>Unable to establish connection to MySQL</strong><br />".mysqli_errno($db_connect)." : ".mysqli_error($db_connect));
  4. if(function_exists('mysqli_set_charset')){mysqli_set_charset($db_connect,$db_charset);}else{mysqli_query($db_connect,'SET NAMES '.$db_charset);}}
Добавлено за 0.023 секунд, используя GeSHi 1.0.8.10


Изменил(а) SchreiBear, 08.06.2020 23:13
Нужно сказать огромное спасибо людям, которые живут на популярных девелопер форумах и дают там адекватные ответы на абсолютно «нубские» вопросы без попыток унизить вопрошающего.
 
Vveb--ws
ураааааааааа! у меня уже работает сайт на PHP7!!

maincore.php
Скачать исходники  Код
//== DB ==
if (strpos("_".PHP_VERSION, '-', 0)>0) {
   // echo "<!--  ".__FILE__." :: ".__LINE__." strpos('_'.PHP_VERSION, '-')>0 -->";
   define("PHP_VERSION_NUBMER", substr(PHP_VERSION, 0, strpos(PHP_VERSION, '-', 0) ));
} else {
   // echo "<!--  ".__FILE__." :: ".__LINE__." strpos('_'.PHP_VERSION, '-')==0 -->";
   define("PHP_VERSION_NUBMER", PHP_VERSION);
}

   if (version_compare(PHP_VERSION_NUBMER, '7.0.0') >= 0) { //  MySQLi
   // if (version_compare(PHP_VERSION_NUBMER, '7.0.0', '>=')) {  // MySQLi     
        require_once BASEDIR."func/maincore/db_maincore_php7.php";
        // echo 'Я использую PHP версии не ниже 7.0.0, моя версия: ' . PHP_VERSION . "\n";
    } else {    //  MySQL
       // require_once BASEDIR."maincore_db_microtime.php"; // ФУНКЦИИ И СОЕДИНЕНИЕ С БД // Establish mySQL database connection
        require_once BASEDIR."func/maincore/db_maincore_php5.php";
   }



файлы берём отсюда - http://rusfusion.ru/forum/viewthread.php?thread_id=2936&pid=30558#post_30533


ЗАМЕНИТЬ mysql_close --> dbclose
setuser.php
И во всех остальных файлах где есть

ЗАМЕНИТЬ mysql_insert_id --> dbinsertid
administration\custom_pages.php
forum\postnewthread.php
forum\postreply.php
forum\viewthread.php

И во всех остальных файлах где есть

ЗАМЕНИТЬ mysql_affected_rows --> dbaffrows
administration\forums_prune.php
forum\options.php
forum\viewforum.php

И во всех остальных файлах где есть


Удалить папку includes\jscripts\tiny_mce\plugins\ibrowser\ - слишком много несовместимых функций плюс кнопка плагина не работает в TinyMCE
и отображение кнопки в themes\templates\admin_header_mce.php
Скачать исходники  Код
    plugins : \"safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,ibrowser\",



Удалить последннее слово
Скачать исходники  Код
,ibrowser



кто знает зачем нужен ibrowser?


для тех кто использует плагин register_quest
заменяю eregi_replace на preg_replace
было:
Скачать исходники  Код
$quest = stripinput(trim(eregi_replace(" +", " ", $_POST['quest'])));



стало:
Скачать исходники  Код
$quest =  stripinput(trim(preg_replace('/ {2,}/',' ', $_POST['quest']))); // ЗАМЕНЯЕТ ДВОЙНЫЕ ПОДЧЁРКИВАНИЯ НА ОДИНАРНЫЕ





так как magic_quotes не работает с PHP 5.4, я добавляю строки
Скачать исходники  Код
 if (defined("PHP_VERSION_NUBMER") and version_compare(PHP_VERSION_NUBMER, '5.4.0')<0)



в функции EncodeFile файлов
includes\class.phpmailer.php
includes\phpmailer_include.php

Скачать исходники  Код
  /**
   * Encodes attachment in requested format.  Returns an
   * empty string on failure.
   * @access private
   * @return string
   */
  function EncodeFile ($path, $encoding = 'base64') {
    if(!@$fd = fopen($path, 'rb')) {
      $this->SetError($this->Lang('file_open') . $path);
      return '';
    }
 
   if (defined("PHP_VERSION_NUBMER") and version_compare(PHP_VERSION_NUBMER, '5.4.0')<0) {
         $magic_quotes = get_magic_quotes_runtime();
         set_magic_quotes_runtime(0);
   }
    $file_buffer = fread($fd, filesize($path));
    $file_buffer = $this->EncodeString($file_buffer, $encoding);
    fclose($fd);
   if (defined("PHP_VERSION_NUBMER") and version_compare(PHP_VERSION_NUBMER, '5.4.0')<0)
    set_magic_quotes_runtime($magic_quotes);
   
    return $file_buffer;
  }





ЧТО Я НЕ ДЕЛАЛ:


В файлах geshi (вероятно это подсветка функций)
includes\bbcodes\geshi\geshi\php-brief.php
includes\bbcodes\geshi\geshi\php.php

я не менял названия функций на новые
mysql_close --> dbclose
mysql_insert_id --> dbinsertid
mysql_affected_rows --> dbaffrows

Потому что мне щас не до подсветки


функция mysql_result встречается только в функциях подключения к БД maincore.php,
поэтому замена mysql_result --> mysqli_result нигде не требуется.




страница сайта PHP-Fusion Bogatyr (c кешем) на PHP7 грузится 20-50 милисекунд.
50 - это в админке (где Тина и пр прелести).
20 - снаружи для пользователей.

без кеша на PHP5 - 300-500 милисекунд.


Объединено 17.06.2020 14:50:
а вот и вишенка на торте!
TinyBrowser для вставки картинок в TinyMCE не работает при включённом PHP7 и выше. видим пустой белый экран.

смотрим \includes\jscripts\tiny_mce\plugins\tinybrowser\error_log
2020-06-16 22:49:05 (MSK) 8192 Function sql_regcase() is deprecated File: fns_tinybrowser.php Line: 382


функция sql_regcase() не указана в списке функций запрещённых или изменённых в PHP7.
https://www.php.net/manual/ru/function.sql-regcase.php
Эта функция объявлена УСТАРЕВШЕЙ в PHP 5.3.0, и УДАЛЕНА PHP 7.0.0.

Создает допустимое регулярное выражение, которое будет совпадать с string, игнорируя регистр символов. Это выражение является string, в которой каждый буквенный символ заменен на символьный класс (выражение в квадратных скобках); каждый такой символьный класс содержит символы в нижнем и верхнем регистре. Другие символы остаются без изменений.


в соответствии с этим http://php.net/manual/en/reference.pcre.pattern.posix.php нет эквивалентной функции в PHP7.

ПОИСК sql_regcase в файлах CMS с помощью Total Commander
встречается только в \includes\jscripts\tiny_mce\plugins\tinybrowser\fns_tinybrowser.php

ПОИСК в Гугле sql_regcase PHP7
и опа - попадается 1 в 1 вопрос и ответ - https://stackoverflow.com/questions/26619110/alternative-function-for-php-deprecated-sql-regcase

если версия PHP 7 и выше я делаю пользовательскую функцию my_Sql_regcase, если меньше - использую sql_regcase
fns_tinybrowser.php
Скачать исходники  Код
   if (version_compare(PHP_VERSION_NUBMER, '7.0.0') >= 0) { //  MySQLi
   // if (version_compare(PHP_VERSION_NUBMER, '7.0.0', '>=')) {  // MySQLi     
        //   echo 'Я использую PHP версии не ниже 7.0.0, моя версия: ' . PHP_VERSION . "\n";

//=-//=-//=-//=-//=-//=-//=-//=-//=-//=-
// https://stackoverflow.com/questions/26619110/alternative-function-for-php-deprecated-sql-regcase
function my_Sql_regcase($str){
    $res = "";
    $chars = str_split($str);
    foreach($chars as $char){
        if(preg_match("/[A-Za-z]/", $char))
            $res .= "[".mb_strtoupper($char, 'UTF-8').mb_strtolower($char, 'UTF-8')."]";
        else
            $res .= $char;
    }
    return $res;
}
//=-//=-//=-//=-//=-//=-//=-//=-//=-//=-

    } else {

//=-//=-//=-//=-//=-//=-//=-//=-//=-//=-
function my_Sql_regcase($str){
   $res = sql_regcase($str);
    return $res;
}
//=-//=-//=-//=-//=-//=-//=-//=-//=-//=-
   }





В КОДЕ просто заменяю название функции
Скачать исходники  Код
   $filenum=0;
   foreach($filetypes as $filetype)
   {
      // echo "<p>filetype=$filetype</p>\n";
         // $filenum = $filenum + count(glob($root.$tree.$branch.sql_regcase($filetype),GLOB_NOSORT));
      $filenum = $filenum + count(glob($root.$tree.$branch.my_Sql_regcase($filetype),GLOB_NOSORT));
      }





* * *

где и как я искал функции

5.6 -> 7.0.
Миграция с PHP 5.6.x на PHP 7.0.x - https://php.net/manual/ru/migration70.php
Изменения, ломающие обратную совместимость - https://php.net/manual/ru/migration70.incompatible.php
Новая функциональность - https://php.net/manual/ru/migration70.new-features.php
Функциональность, объявленная устаревшей в PHP 7.0.x - https://php.net/manual/ru/migration70.deprecated.php
Измененные функции - https://php.net/manual/ru/migration70.changed-functions.php
Удаленные расширения и SAPI - https://php.net/manual/ru/migration70.removed-exts-sapis.php
Другие изменения - https://php.net/manual/ru/migration70.other-changes.php

аналогично все с 5.2 до 7.4

Объединено 17.06.2020 18:10:

ИТОГИ:

я перевёл http://ozozhe.ru с PHP 5.2.17 (alt) на PHP 7.4.3 (alt)
Режим работы PHP - CGI
CMS сайта вроде бы работает полностью.
скорость увеличлась очень мало.

для Wordpress прирост скорости был в 6-10 раз. с 1,5-3сек на загрузку страницы до 0,3-0,6сек.

для PHP-Fusion 7 Bogatyr прирост скорости не более чем в полтора-два раза. было 0,3-0,6сек стало 0,14-0,5сек

Wordpress 5.3 на PHP 7.0-7.4 сопоставим по скорости с PHP-Fusion 7 Bogatyr на PHP 5.2.17

Объединено 18.06.2020 01:18:
нет ребята это ещё не всё!
не работают несколько BB-кодов в PHP7!
кто подскажет как исправить регулярки для PHP7

mail_bbcode_include.php
Скачать исходники  Код
$text = preg_replace('#\[mail\]([\r\n]*)([^\s\'\";:\+]*?)([\r\n]*)\[/mail\]#sie', "hide_email('\\2').''", $text);
$text = preg_replace('#\[mail=([\r\n]*)([^\s\'\";:\+]*?)\](.*?)([\r\n]*)\[/mail\]#sie', "hide_email('\\2').''", $text);





img_bbcode_include.php
Скачать исходники  Код
$text = preg_replace("#\[img\]((http|ftp|https|ftps)://)(.*?)(\.(jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG))\[/img\]#sie","'<span style=\'display: block; width: 300px; max-height: 300px; overflow: auto;\' class=\'forum-img-wrapper\'><img src=\'\\1'.str_replace(array('?','&amp;','&','='),'','\\3').'\\4\' alt=\'\\3\\4\' style=\'border:0px\' class=\'forum-img\' /></span>'",$text);





search_bbcode_include.php
Скачать исходники  Код
include LOCALE.LOCALESET."bbcodes/search.php";

if (!function_exists("search_on")) {
   function search_on($where) {
      global $settings;
      if ($where == "all") {
         include LOCALE.LOCALESET."search.php";
         return $locale['407'];
      } else {
         include LOCALE.LOCALESET."search/".$where.".php";
         foreach ($locale as $key => $value) {
        if (preg_match("/400/", $key)) $name = $key;
      }
         return $locale[$name];
      }
   }
}

$text = preg_replace('#\[search\](.*?)([\r\n]*)\[/search\]#si', '<strong>'.$locale['bb_search_prefix'].' <a href=\''.BASEDIR.'search.php?stext=\1\2&amp;method=AND&amp;stype=all&forum_id=0&datelimit=0&fields=2&sort=datestamp&order=0&chars=50\' title=\'\1\2\'>\1\2</a></strong>', $text);
$text = preg_replace('#\[search=(.*?)\](.*?)([\r\n]*)\[/search\]#sie', "'<strong>".$locale['bb_search_prefix']." <a href=\'".BASEDIR."search.php?stext=\\2\\3&amp;method=AND&amp;stype=\\1&forum_id=0&datelimit=0&fields=2&sort=datestamp&order=0&chars=50\' title=\'\\2\\3\'>\\2\\3</a> ".$locale['bb_search_suffix']." '.search_on('\\1').'</strong>'", $text);





url_bbcode_include.php
Скачать исходники  Код
//Url BBCode with auto triming long links
$text = preg_replace('#\[url\]([\r\n]*)(http://|ftp://|https://|ftps://)([^\s\'\"]*?)([\r\n]*)\[/url\]#sie', "'<a href=\'\\2\\3\' target=\'_blank\' title=\'\\2\\3\'>'.trimlink('\\2\\3', 20).(strlen('\\2\\3')>30?substr('\\2\\3', strlen('\\2\\3')-10, strlen('\\2\\3')):'').'</a>'", $text);
$text = preg_replace('#\[url\]([\r\n]*)([^\s\'\"]*?)([\r\n]*)\[/url\]#sie', "'<a href=\'http://\\2\' target=\'_blank\' title=\'\\2\'>'.trimlink('\\2', 20).(strlen('\\2')>30?substr('\\2', strlen('\\2')-10, strlen('\\2')):'').'</a>'", $text);
$text = preg_replace('#\[url=([\r\n]*)(http://|ftp://|https://|ftps://)([^\s\'\"]*?)\](.*?)([\r\n]*)\[/url\]#si', '<a href=\'\2\3\' target=\'_blank\' title=\'\2\3\'>\4</a>', $text);
$text = preg_replace('#\[url=([\r\n]*)([^\s\'\"]*?)\](.*?)([\r\n]*)\[/url\]#si', '<a href=\'http://\2\' target=\'_blank\' title=\'\2\'>\3</a>', $text);




ured_bbcode_include.php
Скачать исходники  Код
//  http://denweb.org/seo/kak-mozhno-skryt-ssylku-ot-poiskovikov/
// echo stripslashes("<script type='text/javascript'>
// function showLink(url,ancor){
//     document.write('<a href=\"'+url+'\" title=\"'+url+'\">'+ancor+'</a>');
// }
// </script>");
// Без труда не вытащить и <script>showLink('http://ribka','рыбки');</script> из пруда.


//Url BBCode with auto triming long links
//ORIGINAL  $text = preg_replace('#\[url\]([\r\n]*)(http://|ftp://|https://|ftps://)([^\s\'\"]*?)([\r\n]*)\[/url\]#sie', "'<a href=\'\\2\\3\' target=\'_blank\' title=\'\\2\\3\'>'.trimlink('\\2\\3', 20).(strlen('\\2\\3')>30?substr('\\2\\3', strlen('\\2\\3')-10, strlen('\\2\\3')):'').'</a>'", $text);
// $text = preg_replace('#\[url\]([\r\n]*)(http://|ftp://|https://|ftps://)([^\s\'\"]*?)([\r\n]*)\[/url\]#sie', "'<a href=\'".BASEDIR."redirect.php?redirect=\\2\\3\' target=\'_blank\' title=\'\\2\\3\'>'.trimlink('\\2\\3', 20).(strlen('\\2\\3')>30?substr('\\2\\3', strlen('\\2\\3')-10, strlen('\\2\\3')):'').'</a>'", $text);

 $text = preg_replace('#\[ured\]([\r\n]*)(http://|ftp://|https://|ftps://)([^\s\'\"]*?)([\r\n]*)\[/ured\]#sie', "'<script>showLink(\'\\2\\3\' , \''.trimlink('\\2\\3', 20).(strlen('\\2\\3')>30?substr('\\2\\3', strlen('\\2\\3')-10, strlen('\\2\\3')):'').'\');</script> '", $text);


//ORIGINAL $text = preg_replace('#\[url\]([\r\n]*)([^\s\'\"]*?)([\r\n]*)\[/url\]#sie', "'<a href=\'http://\\2\' target=\'_blank\' title=\'\\2\'>'.trimlink('\\2', 20).(strlen('\\2')>30?substr('\\2', strlen('\\2')-10, strlen('\\2')):'').'</a>'", $text);
// $text = preg_replace('#\[url\]([\r\n]*)([^\s\'\"]*?)([\r\n]*)\[/url\]#sie', "'<a href=\'".BASEDIR."redirect.php?redirect=http://\\2\' target=\'_blank\' title=\'\\2\'>'.trimlink('\\2', 20).(strlen('\\2')>30?substr('\\2', strlen('\\2')-10, strlen('\\2')):'').'</a>'", $text);

 $text = preg_replace('#\[ured\]([\r\n]*)([^\s\'\"]*?)([\r\n]*)\[/ured\]#sie', "'<script>showLink(\'http://\\2\' , \''.trimlink('\\2', 20).(strlen('\\2')>30?substr('\\2', strlen('\\2')-10, strlen('\\2')):'').'\');</script>'", $text);


//ORIGINAL $text = preg_replace('#\[url=([\r\n]*)(http://|ftp://|https://|ftps://)([^\s\'\"]*?)\](.*?)([\r\n]*)\[/url\]#si', '<a href=\'\2\3\' target=\'_blank\' title=\'\2\3\'>\4</a>', $text);
// $text = preg_replace('#\[url=([\r\n]*)(http://|ftp://|https://|ftps://)([^\s\'\"]*?)\](.*?)([\r\n]*)\[/url\]#si', '<a href=\''.BASEDIR.'redirect.php?redirect=\2\3\' target=\'_blank\' title=\'\2\3\'>\4</a>', $text);

 $text = preg_replace('#\[ured=([\r\n]*)(http://|ftp://|https://|ftps://)([^\s\'\"]*?)\](.*?)([\r\n]*)\[/ured\]#si', '<script>showLink(\'\2\3\' , \'\4\');</script>', $text);


//ORIGINAL $text = preg_replace('#\[url=([\r\n]*)([^\s\'\"]*?)\](.*?)([\r\n]*)\[/url\]#si', '<a href=\'http://\2\' target=\'_blank\' title=\'\2\'>\3</a>', $text);
//

 $text = preg_replace('#\[ured=([\r\n]*)([^\s\'\"]*?)\](.*?)([\r\n]*)\[/ured\]#si', '<script>showLink(\'http://\2\' , \'\3\');</script>', $text);





Изменил(а) Vveb--ws, 17.06.2020 22:18

PHP-Fusion 7 Bogatyr - бесплатная мультиязычная CMS для блога, форума, фотогалереи

vk.com/phpfusion
Создаю интернет-магазины и блоги, лендинги, форумы. Telegram: t.me/Vova_Kazakov
 
Web
kazik
Головняк ненужный, Владимир.. Немец да-а-а-вно сделал дистр под PHP7.*.* И темы адаптивные без кривизны. Года два уж.ab

 
Vveb--ws
ЧТОБЫ РАБОТАЛИ BB-коды в PHP7

1) // ПРОВЕРКА И УДАЛЕНИЕ
сначала я отключаю блоки URL и IMG которые содержат недопустимые символы (одинарную и двойную кавычки, знаки больше меньше " ' < >).

2) // вывожу BB-код

3) // ПОДСВЕТКА неправильных
URL что остались без (http://|ftp://|https://|ftps://) вначале
IMG без расширения картинок в конце

url_bbcode_include.php
Скачать исходники  Код
// ПРОВЕРКА И УДАЛЕНИЕ простой урл
$text = preg_replace('#\[url\]((.*?)(")(.*?))\[/url\]#i', ' <span style="background-color:red; color:yellow;">&nbsp;&quot; disabled in url&nbsp;</span> ', $text); // "  ДВОЙНАЯ КАВЫЧКА
$text = preg_replace("#\[url\]((.*?)(')(.*?))\[/url\]#i", ' <span style="background-color:red; color:yellow;">&nbsp;&#39; disabled in url&nbsp;</span> ', $text);// '  ОДИНАРНАЯ КАВЫЧКА
$text = preg_replace("#\[url\]((.*?)(>)(.*?))\[/url\]#i", ' <span style="background-color:red; color:yellow;">&nbsp;&lt; disabled in url&nbsp;</span> ', $text);// >   знак больше
$text = preg_replace("#\[url\]((.*?)(<)(.*?))\[/url\]#i", ' <span style="background-color:red; color:yellow;">&nbsp;&gt; disabled in url&nbsp;</span> ', $text); // < знак меньше

// ПРОВЕРКА И УДАЛЕНИЕ анкор и урл
$text = preg_replace('#\[url=((.*?)(")(.*?))\](.*?)\[/url\]#i', ' <span style="background-color:red; color:yellow;">&nbsp;&quot; disabled in url&nbsp;</span> ', $text); // "  ДВОЙНАЯ КАВЫЧКА
$text = preg_replace("#\[url=((.*?)(')(.*?))\](.*?)\[/url\]#i", ' <span style="background-color:red; color:yellow;">&nbsp;&#39; disabled in url&nbsp;</span> ', $text);// '  ОДИНАРНАЯ КАВЫЧКА
$text = preg_replace("#\[url=((.*?)(>)(.*?))\](.*?)\[/url\]#i", ' <span style="background-color:red; color:yellow;">&nbsp;&lt; disabled in url&nbsp;</span> ', $text);// >   знак больше
$text = preg_replace("#\[url=((.*?)(<)(.*?))\](.*?)\[/url\]#i", ' <span style="background-color:red; color:yellow;">&nbsp;&gt; disabled in url&nbsp;</span> ', $text); // < знак меньше

// вывожу BB-код
$text = preg_replace("#\[url\](http://|ftp://|https://|ftps://)(.+)\[/url\]#i", '<a href="$1$2" target="_blank" title="$1$2">$1$2</a>', $text);
$text = preg_replace('#\[url=(http://|ftp://|https://|ftps://)(.+)\](.+)\[/url\]#i', '<script type="text/javascript">showLink(\'\1\2\',\'\3\');</script>', $text);

// ПОДСВЕТКА всё что остались без (http://|ftp://|https://|ftps://) вначале
$text = preg_replace('#\[url\](.+)\[/url\]#i', '<span style="background-color:yellow; color:red;">&nbsp;&quot;$1&quot; NOT  url&nbsp;</span>', $text);
$text = preg_replace('#\[url=(.*?)\](.*?)\[/url\]#i', '<span style="background-color:yellow; color:red;">&nbsp;&quot;$1&quot; NOT url&nbsp;</span>', $text);






img_bbcode_include.php
Скачать исходники  Код
// ПРОВЕРКА И УДАЛЕНИЕ
$text = preg_replace('#\[img\]((.*?)(")(.*?))\[/img\]#i', ' <span style="background-color:red; color:yellow;">&nbsp;&quot; disabled in img&nbsp;</span> ', $text); // "  ДВОЙНАЯ КАВЫЧКА
$text = preg_replace("#\[img\]((.*?)(')(.*?))\[/img\]#i", ' <span style="background-color:red; color:yellow;">&nbsp;&#39; disabled in img&nbsp;</span> ', $text);// '  ОДИНАРНАЯ КАВЫЧКА
$text = preg_replace("#\[img\]((.*?)(>)(.*?))\[/img\]#i", ' <span style="background-color:red; color:yellow;">&nbsp;&lt; disabled in img&nbsp;</span> ', $text);// >   знак больше
$text = preg_replace("#\[img\]((.*?)(<)(.*?))\[/img\]#i", ' <span style="background-color:red; color:yellow;">&nbsp;&gt; disabled in img&nbsp;</span> ', $text); // < знак меньше

// вывожу BB-код
$text = preg_replace("#\[img\]((.*?)(\.jpg|\.jpeg|\.gif|\.png|\.JPG|\.JPEG|\.GIF|\.PNG))\[/img\]#i", '<div class="forum-img-wrapper"><img class="forum-img" src="$1" title="$1" alt="$1" border="1" vspace="6" hspace="6" /></div>', $text);

// ПОДСВЕТКА
$text = preg_replace('#\[img\](.+)\[/img\]#isU', '<span style="background-color:yellow; color:red;">&nbsp;&quot;$1&quot; NOT &quot;.jpg&quot;, &quot;.jpeg&quot;, &quot;.gif&quot;, &quot;.png&quot;, &quot;.JPG&quot;, &quot;.JPEG&quot;, &quot;.GIF&quot;, &quot;.PNG&quot; file&nbsp;</span>', $text);






вообще первод на PHP7 полезен Wordpress (скорость увеличивается в 6-10 раз, время загрузки страницы падает с 1,5-3сек до 0,3-0,45сек)
а для Фужика скорость увеличивается не более чем в полтора-два раза. а иногда и практически такая же.

щас на php7 работают:
ozozhe.ru (Bogatyr + магазин)
vveb.ws (Bogatyr + магазин)
holodilnik.vveb.ws (Bogatyr + магазин)
pagex.vveb.ws (Bogatyr + Pagex)
1and.ru (CMS лендинга)
themes-wordpress.ru ( CMS лендинга + Wordpress на внутряке)

остальные сайты тоже планирую переводить постепенно.

движок магазина (кеш частичный)
PHP5.2 http://firmstyle.net/cms.php Время загрузки: 0.34-0.36 секунд (Bogatyr + магазин)
PHP7.4 http://ozozhe.ru/page.php?id=53586 Время загрузки: 0.36-0,37 секунд (Bogatyr + магазин)

движок блога Pagex (кеш полный)
PHP7.4 http://pagex.vveb.ws/pagex.php?id=7 Время загрузки: 14-16 mc (Bogatyr + Pagex)


Изменил(а) Vveb--ws, 19.06.2020 16:24

PHP-Fusion 7 Bogatyr - бесплатная мультиязычная CMS для блога, форума, фотогалереи

vk.com/phpfusion
Создаю интернет-магазины и блоги, лендинги, форумы. Telegram: t.me/Vova_Kazakov
 
Web
Polarfox
просто поставить новую версию и проблема исчезнет, либо зенд откатить на 5,4


Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
 
SchreiBear
Vveb--ws, Есть вопрос... нафига тебе это? Не наигрался ещё в этой песочнице? С теми знаниями что имеешь уже давно простенькую собственную cms замутить мог.. которая бы летала, а не ползала. две трети функционала фьюжика всё равно нафиг не нужно.


Нужно сказать огромное спасибо людям, которые живут на популярных девелопер форумах и дают там адекватные ответы на абсолютно «нубские» вопросы без попыток унизить вопрошающего.
 
Vveb--ws
SchreiBear написал:

Vveb--ws, Есть вопрос... нафига тебе это? Не наигрался ещё в этой песочнице? С теми знаниями что имеешь уже давно простенькую собственную cms замутить мог.. которая бы летала, а не ползала. две трети функционала фьюжика всё равно нафиг не нужно.

обновляю свои сайты на фужике.
у меня на WP только 1 сайт. остальные на Фужике и CMS Лендинге.
на Фужике ещё 2 осталось на PHP5 и win1251. остальные уже utf8 и PHP7
Лендинги тоже перевожу на PHP7



PHP-Fusion 7 Bogatyr - бесплатная мультиязычная CMS для блога, форума, фотогалереи

vk.com/phpfusion
Создаю интернет-магазины и блоги, лендинги, форумы. Telegram: t.me/Vova_Kazakov
 
Web
kazik
Владимир, ну а хотя-бы стольник за месяц Вы имеете с создания ресурсов или со своихх сайтов? Иначе всё это выглядит просто программным онанизмом ab И дизайн сайтов ужасный. Согласны?

x1
 

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум: