D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
shubmkcj
/
createerp.com
/
br
/
logistics
/
system
/
Publisher
/
Filename :
ContentReplacer.php
back
Copy
<?php /** * This file is part of CodeIgniter 4 framework. * * (c) CodeIgniter Foundation <admin@codeigniter.com> * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace CodeIgniter\Publisher; use RuntimeException; /** * Replace Text Content */ class ContentReplacer { /** * Replace content * * @param array $replaces [search => replace] */ public function replace(string $content, array $replaces): string { return strtr($content, $replaces); } /** * Add text * * @param string $text Text to add. * @param string $pattern Regexp search pattern. * @param string $replace Regexp replacement including text to add. * * @return string|null Updated content, or null if not updated. */ private function add(string $content, string $text, string $pattern, string $replace): ?string { $return = preg_match('/' . preg_quote($text, '/') . '/u', $content); if ($return === false) { // Regexp error. throw new RuntimeException('Regex error. PCRE error code: ' . preg_last_error()); } if ($return === 1) { // It has already been updated. return null; } $return = preg_replace($pattern, $replace, $content); if ($return === null) { // Regexp error. throw new RuntimeException('Regex error. PCRE error code: ' . preg_last_error()); } return $return; } /** * Add line after the line with the string * * @param string $content Whole content. * @param string $line Line to add. * @param string $after String to search. * * @return string|null Updated content, or null if not updated. */ public function addAfter(string $content, string $line, string $after): ?string { $pattern = '/(.*)(\n[^\n]*?' . preg_quote($after, '/') . '[^\n]*?\n)/su'; $replace = '$1$2' . $line . "\n"; return $this->add($content, $line, $pattern, $replace); } /** * Add line before the line with the string * * @param string $content Whole content. * @param string $line Line to add. * @param string $before String to search. * * @return string|null Updated content, or null if not updated. */ public function addBefore(string $content, string $line, string $before): ?string { $pattern = '/(\n)([^\n]*?' . preg_quote($before, '/') . ')(.*)/su'; $replace = '$1' . $line . "\n" . '$2$3'; return $this->add($content, $line, $pattern, $replace); } }