Heim  >  Artikel  >  Backend-Entwicklung  >  So fügen Sie mit PHP eine Hintergrundfarbe zu Schlüsselwörtern in Word hinzu

So fügen Sie mit PHP eine Hintergrundfarbe zu Schlüsselwörtern in Word hinzu

不言
不言nach vorne
2018-10-09 13:59:362821Durchsuche

Der Inhalt dieses Artikels befasst sich mit dem Hinzufügen von Hintergrundfarben zu Schlüsselwörtern in PHP. Ich hoffe, dass er für Freunde hilfreich ist.

Anforderung: Ich habe kürzlich ein Standard-Scan-Tool für Wortnachrichten erstellt, das den Inhalt in Wort lesen, verdächtige und falsche Worttexte scannen und dem falschen und verdächtigen Text Hintergrundfarbe hinzufügen muss.
Die Erkennung von Inhaltsscanspezifikationen wird in diesem Artikel nicht beschrieben. Der entscheidende Punkt besteht darin, wie man Text Hintergrundfarbe hinzufügt, indem man Word über die Programmiersprache.

Um den Effekt schnell zu erzielen, erweitern Sie die Funktion direkt auf https://github.com/PHPOffice/... Dieses Projekt:

  • Laden Sie das Projekt herunter Verzeichnis wie folgt

So fügen Sie mit PHP eine Hintergrundfarbe zu Schlüsselwörtern in Word hinzu

  • Erstellen Sie eine neue Datei Template.php im Pfad phpoffice/phpword/ src/PhpWord/

<?php namespace PhpOffice\PhpWord;

class Template extends TemplateProcessor
{
    public $tempDocumentMainPart;

    public function __construct($documentTemplate)
    {
        parent::__construct($documentTemplate);
    }

    static $wordArr;
    static $color = &#39;yellow&#39;;

    /**
     * 多个词替换目前替换背景色功能
     *
     * @param $word
     * @param $color
     * @example {
     *  $template = new \PhpOffice\PhpWord\Template($path);
     *  $template->setWordBgColor($txt, 'yellow');
     * }
     */
    public function setWordArrBgColor($word, $color)
    {
        self::$wordArr = array_unique($word);
        if (!empty(self::$wordArr)) {

            self::$color  = $color;

            $this->tempDocumentHeaders = $this->_replace($this->tempDocumentHeaders);
            $this->tempDocumentMainPart = $this->_replace($this->tempDocumentMainPart);
            $this->tempDocumentFooters = $this->_replace($this->tempDocumentFooters);
        }
    }

    private function _replace($content) {

        return preg_replace_callback(
            '/<r>]*)>((?:(?!)[\s\S])*)<t>]*>((?:(?!)[\s\S])*)]*>/iUs',
            function ($matches) {
                // print_r($matches);
                if (!empty(trim($matches[3]))) {

                    $text = $matches[3];

                    foreach (self::$wordArr AS $value) {

                        // 判断关键词在字符串中是否存在
                        if (false !== strpos($text, $value)) {

                            // 背景色属性
                            $bgAttr = empty($matches[2])
                                ? '<rpr><highlight></highlight></rpr>'
                                : str_ireplace('', '<highlight></highlight>', $matches[2]);

                            $matches[0] = str_ireplace($value,
                                '</t></r><r>'.$bgAttr.'<t>'.$value.'</t></r><r>'.$bgAttr.'<t>',
                                $matches[0]);
                        }
                    }


                    if (!empty($matches[0])) {

                        // 过滤掉空的
                        $matches[0] = preg_replace('/<r>]*>(?:(?!)[\s\S])*<t>]*>]*>/iUs', '', $matches[0]);
                    }
                }
                return $matches[0];
            },
            $content);
    }
}</t></r></t></r>
  • Der zweite Teil erweitert die Funktion zum Ersetzen der Hintergrundfarbe.

//引入类库
require autoload.php
$path = './test.docx';
$template = new \PhpOffice\PhpWord\Template($path);
$template->setWordArrBgColor(['TMD', '台湾省', 'Caonima'], 'yellow');

Das obige ist der detaillierte Inhalt vonSo fügen Sie mit PHP eine Hintergrundfarbe zu Schlüsselwörtern in Word hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen