WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

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

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

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
Сергей
2.1 год назад
  • 1
    qwert555139 naytikurs.ru

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

    Сергей 2.1 год назад

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

    qwert555 2.1 год назад

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

    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);
    Сергей 2.1 год назад

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

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