Heim > Backend-Entwicklung > PHP-Tutorial > 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

不言
Freigeben: 2023-04-04 09:04:02
nach vorne
2832 Leute haben es durchsucht

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>
Nach dem Login kopieren
  • 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');
Nach dem Login kopieren

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!

Verwandte Etiketten:
php
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage