WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Как объединить две функции в одну?

Есть две функции. Первая:

require_once __DIR__ . '/vendor/autoload.php';
use Highlight\Highlighter;

function applySyntaxHighlighting($content) {

  $pattern = '~<pre[^>]*><code[^>]*>\K.*(?=</code></pre>)~Uis';

  return preg_replace_callback($pattern, function ($match) {
	$highlighter = new Highlighter();

	$highlighter->setAutodetectLanguages([
	  'html', 
	  'php', 
	]);
	$input = htmlspecialchars_decode($match[0]);

	return $highlighter->highlightAuto($input)->value;
  }, $content);
}
add_filter('the_content', 'applySyntaxHighlighting', 10);

И вторая:

require_once __DIR__ . '/vendor/autoload.php';
use Highlight\Highlighter;

function applySyntaxHighlighting($comment) {

  $pattern = '~<pre[^>]*><code[^>]*>\K.*(?=</code></pre>)~Uis';

  return preg_replace_callback($pattern, function ($match) {
	$highlighter = new Highlighter();

	$highlighter->setAutodetectLanguages([
	  'html', 
	  'php', 
	]);
	$input = htmlspecialchars_decode($match[0]);

	return $highlighter->highlightAuto($input)->value;
  }, $comment);
}
add_filter('comment_text', 'applySyntaxHighlighting', 10);

Можно ли их объединить в одну?

0
Сергей
4.5 лет назад
  • 1
    qwert555154 naytikurs.ru

    Они вроде одинаковые? зачем их объединять?

    Сергей 4.5 лет назад

    В первой $content и the_content, а во второй $comment и comment_text используется. Не одинаковые. Но при этом очень много одинакового кода, который не хотелось бы по несколько раз исполнять...

    qwert555 4.5 лет назад

    используйте одну функцию на оба фильтра, сами же функции абсолютно одинаковые

    function applySyntaxHighlighting($text) {
    
      $pattern = '~]*><code[^>]*>\K.*(?=</code>)~Uis';
    
      return preg_replace_callback($pattern, function ($match) {
    	$highlighter = new Highlighter();
    
    	$highlighter->setAutodetectLanguages([
    	  'html', 
    	  'php', 
    	]);
    	$input = htmlspecialchars_decode($match[0]);
    
    	return $highlighter->highlightAuto($input)->value;
      }, $text);
    }
    add_filter('comment_text', 'applySyntaxHighlighting', 10);
    add_filter('the_content', 'applySyntaxHighlighting', 10);
    Сергей 4.5 лет назад

    Все получилось, большое спасибо!

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация