| Server IP : _ / Your IP : 169.254.129.1 Web Server : nginx/1.28.0 System : Linux 89e302d72aa1 6.6.143.1-1.azl3 #1 SMP PREEMPT_DYNAMIC Mon Jul 6 04:01:14 UTC 2026 x86_64 User : nginx ( 103) PHP Version : 8.2.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/wordpress/wp-content/plugins/wp-seopress/src/Services/ |
Upload File : |
<?php
namespace SEOPress\Services;
if ( ! defined('ABSPATH')) {
exit;
}
class VariablesToString {
const REGEX = "#\[\[(.*?)\]\]#";
/**
* @since 4.5.0
*
* @param string $string
*
* @return array
*/
public function getVariables($string) {
if ( ! is_string($string)) {
return [];
}
preg_match_all(self::REGEX, $string, $matches);
return $matches;
}
/**
* @since 4.5.0
*
* @param function $variable
* @param array $context
*
* @return void
*/
public function getValueFromContext($variable, $context= []) {
if ( ! array_key_exists($variable, $context)) {
return '';
}
return $context[$variable];
}
/**
* @since 4.5.0
*
* @param string $string
* @param mixed $context
*
* @return string
*/
public function replace($string, $context = []) {
$variables = $this->getVariables($string);
if ( ! array_key_exists(1, $variables)) {
return $string;
}
foreach ($variables[1] as $key => $variable) {
$value = $this->getValueFromContext($variable, $context);
$string = str_replace($variables[0][$key], $value, $string);
}
return $string;
}
/**
* @since 4.5.0
*
* @param array $data
*
* @return array
*/
protected function removeDataEmpty($data) {
return array_filter($data);
}
/**
* @since 4.5.0
*
* @param array $data
* @param array $context
* @param mixed $options
*
* @return array
*/
public function replaceDataToString($data, $context = [], $options = []) {
foreach ($data as $key => $value) {
if (is_array($value)) {
$data[$key] = $this->replaceDataToString($value, $context, $options);
} else {
$data[$key] = $this->replace($value, $context);
}
}
if (isset($options['remove_empty']) && $options['remove_empty']) {
$data = $this->removeDataEmpty($data);
}
return $data;
}
}