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
Сергей
10 сентября 2019
  • 1

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

    Сергей 10 Сен. 2019

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

    qwert555 10 Сен. 2019

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

    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);
    Сергей 11 Сен. 2019

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

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