Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую! eurobyte.ru - мощные сервера с Дата-центрами в Нидерландах и Москве. От 159 ₽/мес.

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

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

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
Сергей
6.8 лет назад
  • 1
    qwert555 154 naytikurs.ru

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

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

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

    qwert555 6.8 лет назад

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

    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);
    Сергей 6.8 лет назад

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

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