Замена переменной при переменной php

Содержание
  1. Как заменить переменную в строке значением в php?
  2. Решение
  3. Другие решения
  4. Как в php изменить значение переменной из другого файла?
  5. Возможна ли замена переменной в строке?
  6. Замена одной переменной
  7. Замена нескольких переменных
  8. Замена нескольких переменных на PHP В предыдущем решении используется закрытие, поэтому для его выполнения требуется PHP 5.3. Если у вас нет PHP5.3, вы можете сделать то же самое с этим: class Replacer < private $vars = array( 'fruit' =>'apple', 'color' => 'red', ); function replace($match) < if (isset($this->vars[$match[1]])) < return $this->vars[$match[1]]; > else < return $match[0]; >> > $text = preg_replace_callback('/#(\w+)\b/', array(new Replacer, 'replace'), $string); Зачем использовать для этого класс? Таким образом, функция может обращаться к $this->vars , это позволяет избежать использования глобальной переменной. Переменная интерполяция Если вы пытаетесь вставить переменные внутри строковых литералов, PHP может сделать это за вас: $fruit = 'apple'; $string = "The fruit is: $fruit"; Когда вы используете двойные кавычки для включения строк, PHP распознает переменные и автоматически их заменяет. Источник изменить значение переменной Нужно, чтобы мы ввели значение и нажали сменить, файл file.php перезаписывался и в переменной $kku, появилось новое значение. Пробовал так, но в таком случае, перезаписывается весь файл и остается, только то, что мы ввели. $kku = file_get_contents ( "file.php" ) ; echo '' . "\" $kku \" name=\" new_content_field\" >" . ' ' ; if ( $_POST [ "ok" ] ) { $file = fopen ( "file.php" , "a+" ) ; $cut = ftruncate ( $file , 0 ) ; file_put_contents ( "file.php" , $_POST [ "new_content_field" ] ) or die ( "Error" ) ; } ?> Изменить значение переменной Помогите пожалуйста. Как сделать так чтобы значение переменной менялось. Переменная num это. Изменить значение переменной? Вот есть у меня страничка index.php там есть вот такой код: PHP код: <?php . Изменить значение переменной в конфиге Есть файл config.php в нем записанны настройки в таком ввиде: $PARAM1 = »; $PARAM2 = »; и. Изменить значение переменной для всех в определённое время Есть переменная в базе данных переменная Bonys=0; Как сделать чтобы допустим в 00 00 она у всех. Вобще это очень плохо указывать переменные в файле. Либо хранить переменные в определенном формате, например языковые файлы, в виде массива: // Text $_ [ 'text_subject' ] = '%s - Партнерская программа' ; $_ [ 'text_welcome' ] = 'Поздравляем. Вы стали партнером нашего магазина %s !' ; //И т.д. Сообщение от Xenox Но если уж прямо совсем приспичило, то в Вашем случае придется считывать весь файл, находить строку с той переменной, которая нужна, заменять и записывать обратно. Сделать, конечно, можно практически все. Но оно и не совсем правильно с точки зрения безопасности, и, с другой стороны, ваще неудобно Да это понятно, что в БД лучше, но БД не используется и не будет. А доступ к странице, только у меня будет. Сообщение от owlpost Странно, конечно, просто и дамп проще сделать и вобще.. Ну да ладно, у вас файл .php ? Если да, то присутствуют ли в нем теги файл .php, но сделать .html или еще что, не проблема. цель задачи, зайти на страницу с инпутом, ввести туда число, и чтобы это число сохранилось в переменной. Сообщение было отмечено owlpost как решение Решение Ну тогда сделайте в определенном формате. Например: файл test.txt kku = 156666 asd = 3213 Затем считываете файл в массив: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 //Получаем перемнные из файла в виде массива, каждая строка - элемент массива $arr = file ( "test.txt" ) ; foreach ( $arr as $key => $value ) { $split = explode ( "=" , $arr [ $key ] ) ; $params [ trim ( $split [ '0' ] ) ] = trim ( $split [ '1' ] ) ; } $kku = $params [ 'kku' ] ; //Получили переменну $kku поработали с ней $asd = $params [ 'asd' ] ; //Аналогично $kku = 3132 ; //Переопределили $kku, получив через форму значение переменной kku например //$kku = $_POST['kku']; //И перезапись файла, нужно указать все переменные которые есть в файле, //Потому что файл перезапишется. $file = fopen ( "test.txt" , "w+" ) ; fwrite ( $file , "kku = $kku \n " ) ; fwrite ( $file , "asd = $asd \n " ) ; fclose ( $file ) ; Источник
  9. Переменная интерполяция
  10. изменить значение переменной
  11. Решение
Читайте также:  Python сумма чисел больше 100

Как заменить переменную в строке значением в php?

Мой вывод i am a fan ,
я хочу i am a Barcelona fan
Как я могу это сделать?

Решение

использование strtr Он переведет части строки.

$club = "Barcelona"; echo strtr($data_base[0]['body'], array('' => $club)); 
$data_base[0]['body'] = 'I am a fan.'; // Tests $vars = array( '' => 'Barcelona', '' => 'sometext', '' => 'someothertext' ); echo strtr($data_base[0]['body'], $vars); 

Другие решения

/** * A function to fill the template with variables, returns filled template. * * @param string $template A template with variables placeholders . * @param array $variables A key => value store of variable names and values. * * @return string */ public function replaceVariablesInTemplate($template, array $variables)< return preg_replace_callback('#<(.*?)>#', function($match) use ($variables)< $match[1]=trim($match[1],'$'); return $variables[$match[1]]; >, ' '.$template.' '); > 
if (preg_match_all('#\$([a-zA-Z0-9]+)#', $q, $matches, PREG_SET_ORDER)); < foreach ($matches as $m) < eval('$q = str_replace(\''.$m[0].'\',$'.$m[1].',$q);'); >> 

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

if (preg_match_all('#\#', $q, $matches, PREG_SET_ORDER)); < foreach ($matches as $m) < eval('$q = str_replace(\''.$m[0].'\',$'.$m[1].',$q);'); >> 

Хотя это кажется немного медленнее, чем жесткое кодирование каждой переменной. И это вводит дыру в безопасности с eval. Вот почему мое регулярное выражение так ограничено. Чтобы ограничить сферу действия eval.

Я написал свой собственный тестер регулярных выражений с помощью ajax, чтобы по мере ввода текста я мог видеть, сработает ли мое выражение. У меня есть переменные, которые я хотел бы использовать в своих выражениях, чтобы мне не нужно было повторять один и тот же бит для каждого выражения.

Я бы предложил sprintf() функция.

вместо хранения i am a fan использование i am a %s fan поэтому ваша команда echo будет выглядеть так:

$club = "Barcelona"; echo sprintf($data_base[0]['body'],$club); 

Это дало бы вам свободу использования того же кода с любой другой переменной (и вам даже не нужно запоминать имя переменной).

поэтому этот код также действителен с той же строкой:

$food = "French Fries"; echo sprintf($data_base[0]['body'],$food); 

ВЫХОД: я фанат картофеля фри

$language = "PHP"; echo sprintf($data_base[0]['body'],$language); 

Основная проблема заключается в том, что вы на самом деле не знаете все доступные переменные, или их может быть слишком много для перечисления.

Рассмотрим следующий проверенный фрагмент кода. Я украл регулярное выражение у Мохаммада Мохсенипура.

$testA = '123'; $testB = '456'; $testC = '789'; $t = ' adsf adf 32 fddd'; echo 'before: '.$t."\n"; preg_match_all('~\~si',$t,$matches); if ( isset($matches[1])) < $r = compact($matches[1]); foreach ( $r as $var =>$value ) < $t = str_replace('',$value,$t); > > echo 'after: '.$t."\n"; 
$club = 'Barcelona'; $tmp = $data_base[0]['body']; preg_match_all('~\~si',$tmp,$matches); if ( isset($matches[1])) < $r = compact($matches[1]); foreach ( $r as $var =>$value ) < $tmp = str_replace('',$value,$tmp); > > echo $tmp; 
$club = "Barcelona"; $string = 'i am a fan'; preg_match_all("/\/",$string,$matches); foreach ($matches[0] as $key => $var_name)

Вы можете использовать простой парсер, который заменяет значением из карты, если оно существует.
использовать как $text = templateWith(‘hello $item>’,array(‘item’=>’world’. ));
Моя первая версия:

/** * Template with a string and simple map. * @param string $template * @param array $substitutions map of substitutions. * @return string with substitutions applied. */ function templateWith(string $template, array $substitutions) < $state = 0; // forwarding $charIn = preg_split('//u', $template, -1, PREG_SPLIT_NO_EMPTY); $charOut = array(); $count = count($charIn); $key = array(); $i = 0; while ($i < $count) < $char = $charIn[$i]; switch ($char) < case 'break; case '>': if ($state === 2) < $ks = join('', $key); if (array_key_exists($ks, $substitutions)) < $charOut[] = $substitutions[$ks]; >$key = array(); $state = 0; > break; case '$': if ($state === 1) < $state = 2; >break; case '\\': if ($state === 0) < $i++; $charOut[] = $charIn[$i]; >continue; default: switch ($state) < default: case 0: $charOut[] = $char; break; case 2: $key[] = $char; break; >> $i++; > return join('', $charOut); > 

Пытаться preg_replace функция php.

Источник

Как в php изменить значение переменной из другого файла?

Вопрос: Какой нужно написать код php в файле setting.php который позволит изменить значение переменной $name в другом файле test.php?

webinar

Читайте. Без кода Ваших файлов большего посоветовать не могу.

ak-biznes

Максим, почитал спасибо за ссылочку. Только все равно не получается(((
Вот мой код:
1. Файл redactor.php // Этот файл должен поменять значение переменной другого файла. Его содержание:
$fp = fopen(«test.php», «a»); // Открываем файл в режиме записи
$name = «Сергей\r\n»; // Исходная строка
$test = fwrite($fp, $name); // Запись в файл
if ($test) echo ‘Данные в файл успешно занесены.’;
else echo ‘Ошибка при записи в файл.’;
fclose($fp); //Закрытие файла
?>

2. Файл test.php
Его содержание:
$name=»Андрей»;

В результате этих манипуляций файл test.php становится со следующим содержимым:
$name=»Андрей»;

А мне нужно чтобы файл test.php стал с таким содержимым:
$name=»Сергей»;

Очень надеюсь на Вашу помощь.

webinar

Это ад. Вам надо test.php привести к виду return «Сергей»;
?>
Зачем там переменная? А когда надо заменить, просто перезаписывать файл с новым содержимым. Вообще подобное выносится в базу данных, в сессии или в конфиг файл.

Источник

Возможна ли замена переменной в строке?

Если у меня есть строка и я ищу в строке для определенного текста после сигнала, есть ли способ вывести текстовую строку с конкретным текстом после замены сигнала переменной с тем же именем?

$strin="This is #fruit" $fruit="omg" 

Поэтому я ищу $ strin, извлекаю “фрукты” с помощью регулярного выражения, а затем заменяю #fruit значением $ fruit.

Любые идеи, как это сделать в PHP?

Изменить – это может быть не всегда плод. В основном есть набор #things и $ variablesthethings. Так что это не всегда будет плодом. Но каждый #things будет иметь переменные $. Итак, я не знаю, что будет, но я знаю, что есть переменная для нее с тем же именем. надеюсь, это имеет смысл!

Вы можете использовать переменные переменные в PHP, чтобы иметь свое значение, а затем использовать встроенную PHP-интерполяцию строк, чтобы поместить значение переменной в строку. таким образом ваши имена переменных также могут быть динамическими.

Переменные переменные: в PHP у вас может быть такая переменная:

Но у вас может быть переменная, имя которой определяется из другой переменной. как это:

Это ссылается на переменную, имя которой является значением переменной $ name. Например, если вы получили значение переменной $ name из аргументов CLI:

Затем, если пользователь вводит “фрукты” в командной строке, ваша переменная $ name будет иметь значение “fruit”, а затем имя $$ будет ссылаться на переменную с именем $ fruit со значением “apple”.

теперь вы можете использовать интерполяцию PHP (в строках, заключенных двойными кавычками), чтобы заменить переменную с ее значением:

echo "I have a $$name"; // --> I have a apple. 

Вот пример того, как это сделать:

$father = "John"; $mother = "Marta"; $brother = "Henry"; $relative = $$argv[1]; // or you could read the relative from any source echo "I love $relative"; 

Нет необходимости использовать регулярное выражение здесь, вы можете использовать str_replace :

$result = str_replace("#fruit", $fruit, $strin); 

Если ваша цель – найти токены #x и заменить их значением $x , вы можете сделать что-то вроде этого:

$strin = preg_replace_callback('/#([a-zA-Z_][a-zA-Z0-9_]*)/', function($match) < $varname = substr($match, 1); global $$varname; return $$varname; >, $strin); 

Однако, если это будет оценка строки, предоставленной пользователем, вам лучше отказаться от всех возможных подстановок в ассоциативном массиве. Это по соображениям безопасности (вы не хотите, чтобы какой-либо пользователь сети мог видеть все ваши глобальные переменные, не так ли?). Пример:

$tokens = array('fruit' => 'omg'); $strin = preg_replace_callback('/#([a-zA-Z_][a-zA-Z0-9_]*)/', function($match) < $token = substr($match, 1); return $tokens[$token]; >, $strin); 

Замена одной переменной

Если у вас есть одна переменная для замены, вы можете использовать это простое регулярное выражение:

$text = preg_replace('/#fruit\b/', $fruit, $string); 

\b после #fruit гарантирует, что мы случайно не заменим #fruit2 например.

Замена нескольких переменных

Если у вас есть несколько переменных для замены, вы можете сразу заменить их на preg_replace_callback:

$vars = array( 'fruit' => 'apple', 'color' => 'red', ); $text = preg_replace_callback('/#(\w+)\b/', function($match) use ($vars) < if (isset($vars[$match[1]])) < return $vars[$match[1]]; >else < return $match[0]; >>, $string); 

Регулярное выражение будет соответствовать любому #, за которым следуют буквы и цифры, а _ ( \w соответствует [a-zA-Z0-9_] ). Для каждого соответствия, если переменная с этим именем существует в $ vars, она заменяется значением переменной.

Если вы хотите заменить переменные на истинные переменные PHP (например, замените #fruit значением $fruit ), установите $vars в $GLOBALS :

Но не делайте этого. Если строка исходит от пользователей, они смогут получить значение любой из ваших переменных.

Замена нескольких переменных на PHP

В предыдущем решении используется закрытие, поэтому для его выполнения требуется PHP 5.3.

Если у вас нет PHP5.3, вы можете сделать то же самое с этим:

class Replacer < private $vars = array( 'fruit' =>'apple', 'color' => 'red', ); function replace($match) < if (isset($this->vars[$match[1]])) < return $this->vars[$match[1]]; > else < return $match[0]; >> > $text = preg_replace_callback('/#(\w+)\b/', array(new Replacer, 'replace'), $string); 

Зачем использовать для этого класс? Таким образом, функция может обращаться к $this->vars , это позволяет избежать использования глобальной переменной.

Переменная интерполяция

Если вы пытаетесь вставить переменные внутри строковых литералов, PHP может сделать это за вас:

$fruit = 'apple'; $string = "The fruit is: $fruit"; 

Когда вы используете двойные кавычки для включения строк, PHP распознает переменные и автоматически их заменяет.

Источник

изменить значение переменной

Нужно, чтобы мы ввели значение и нажали сменить, файл file.php перезаписывался и в переменной $kku, появилось новое значение.

Пробовал так, но в таком случае, перезаписывается весь файл и остается, только то, что мы ввели.

 $kku = file_get_contents("file.php"); echo ''."".' '; if($_POST["ok"]) { $file = fopen("file.php", "a+"); $cut = ftruncate($file, 0); file_put_contents("file.php", $_POST["new_content_field"]) or die("Error"); } ?>

Изменить значение переменной
Помогите пожалуйста. Как сделать так чтобы значение переменной менялось. Переменная num это.

Изменить значение переменной?
Вот есть у меня страничка index.php там есть вот такой код: PHP код: <?php .

Изменить значение переменной в конфиге
Есть файл config.php в нем записанны настройки в таком ввиде: $PARAM1 = »; $PARAM2 = »; и.

Изменить значение переменной для всех в определённое время
Есть переменная в базе данных переменная Bonys=0; Как сделать чтобы допустим в 00 00 она у всех.

Вобще это очень плохо указывать переменные в файле. Либо хранить переменные в определенном формате, например языковые файлы, в виде массива:

 // Text $_['text_subject'] = '%s - Партнерская программа'; $_['text_welcome'] = 'Поздравляем. Вы стали партнером нашего магазина %s !'; //И т.д.

ЦитатаСообщение от Xenox Посмотреть сообщение

Но если уж прямо совсем приспичило, то в Вашем случае придется считывать весь файл, находить строку с той переменной, которая нужна, заменять и записывать обратно. Сделать, конечно, можно практически все. Но оно и не совсем правильно с точки зрения безопасности, и, с другой стороны, ваще неудобно

Да это понятно, что в БД лучше, но БД не используется и не будет.

А доступ к странице, только у меня будет.

ЦитатаСообщение от owlpost Посмотреть сообщение

Странно, конечно, просто и дамп проще сделать и вобще.. Ну да ладно, у вас файл .php ? Если да, то присутствуют ли в нем теги

файл .php, но сделать .html или еще что, не проблема.
цель задачи, зайти на страницу с инпутом, ввести туда число, и чтобы это число сохранилось в переменной.

Лучший ответ

Сообщение было отмечено owlpost как решение

Решение

Ну тогда сделайте в определенном формате.
Например:
файл test.txt
kku = 156666
asd = 3213
Затем считываете файл в массив:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
 //Получаем перемнные из файла в виде массива, каждая строка - элемент массива $arr = file("test.txt"); foreach ($arr as $key => $value) { $split = explode("=", $arr[$key]); $params[trim($split['0'])] = trim($split['1']); } $kku = $params['kku']; //Получили переменну $kku поработали с ней $asd = $params['asd']; //Аналогично $kku = 3132; //Переопределили $kku, получив через форму значение переменной kku например //$kku = $_POST['kku']; //И перезапись файла, нужно указать все переменные которые есть в файле, //Потому что файл перезапишется. $file = fopen("test.txt", "w+"); fwrite($file, "kku = $kku \n"); fwrite($file, "asd = $asd \n"); fclose($file);

Источник

Оцените статью