Лучший способ заменить переменными в простом тексте с помощью PHP

Вы были почти там. MediaPlayerElement имеет свойство под названием MediaPlayer, которое имеет IsLoopingEnabled. Поэтому вам нужно установить его, как показано ниже.

mediaPlayer.MediaPlayer.IsLoopingEnabled = true;
8
задан nickf 12 November 2008 в 07:15
поделиться

6 ответов

Если это от надежного источника, можно использовать (поразительная пауза) оценку () (удушье ужаса от аудитории).

$text = 'this is a $test'; // single quotes to simulate getting it from a file
$test = 'banana';
$text = eval('return "' . addslashes($text) . '";');
echo $text; // this is a banana
5
ответ дан 5 December 2019 в 08:55
поделиться

В зависимости от ситуации str_replace мог бы добиться цели.

Пример:

// -- myFile.txt --
Mary had a little %pet%.

// -- parser.php --
$pet = "lamb";
$fileName = myFile.txt

$currentContents = file_get_contents($fileName);

$newContents = str_replace('%pet%', $pet, $currentContents);

// $newContents == 'Mary had a little lamb.'

То, когда Вы смотрите на примечание str_replace, которые ищут и заменяют параметры, может взять массивы значений, чтобы искать и заменить.

0
ответ дан 5 December 2019 в 08:55
поделиться

Вот то, что я только что придумал, но мне все еще было бы интересно знать, существует ли лучший путь.Удачи.

$allVars = get_defined_vars();
$file = file_get_contents('myFile.txt');

foreach ($allVars as $var => $val) {
    $file = preg_replace("@\\$" . $var . "([^a-zA-Z_0-9\x7f-\xff]|$)@", $val . "\\1", $file);
}
2
ответ дан 5 December 2019 в 08:55
поделиться

Это должен быть $pet? Это могло быть <?= $pet ?> вместо этого? Поскольку если так, просто используйте, включают. Это - вся эта мысль о php как механизм шаблонной обработки.

//myFile.txt
Mary had a little <?= $pet ?>.

//parser.php

$pet = "lamb";
ob_start();
include("myFile.txt");
$contents = ob_end_clean();

echo $contents;

Это отзовется эхом:

Mary had a little lamb.
2
ответ дан 5 December 2019 в 08:55
поделиться

Вы могли использовать strtr:

$text = file_get_contents('/path/to/myFile.txt'); // "Mary had a little $pet."
$allVars = get_defined_vars(); // array('pet' => 'lamb');
$translate = array();

foreach ($allVars as $key => $value) {
    $translate['$' . $key] = $value; // prepend '$' to vars to match text
}

// translate is now array('$pet' => 'lamb');

$text = strtr($text, $translate);

echo $text; // "Mary had a little lamb."

Вы, вероятно, хотите сделать предварительное ожидание в get_defined_vars (), таким образом, Вы не циклично выполняете переменные дважды. Или еще лучше, просто удостоверьтесь любые ключи, Вы присваиваете первоначально соответствию идентификатор, который Вы используете в myFile.txt.

-1
ответ дан 5 December 2019 в 08:55
поделиться

Regex был бы достаточно легок. И это не заботилось бы о вещах об этом eval() рассмотрел бы синтаксическую ошибку.

Вот шаблон, чтобы найти, что PHP разрабатывают имена переменной.

\$\w+

Я, вероятно, взял бы этот общий шаблон и использовал бы массив PHP для поиска каждого соответствия, которое я нашел (использующий (preg_replace_callback()). Тем путем regex должен быть применен только однажды, который быстрее на длительном периоде.

$allVars = get_defined_vars();
$file = file_get_contents('myFile.txt');

// unsure if you have to use single or double backslashes here for PHP to understand
preg_replace_callback ('/\$(\w+)/', "find_replacements", $file);

// replace callback function
function find_replacements($match)
{
  global $allVars;
  if (array_key_exists($match[1], $allVars))
    return $allVars[$match[1]];
  else
    return $match[0];
}
11
ответ дан 5 December 2019 в 08:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: