как выполнить код, найденный в строке в php - PullRequest
0 голосов
/ 09 ноября 2018

Heyy, Я хочу запустить код, найденный в строке ниже

$str=" $row["AccountID"].$row["CurrencyID"] "; 

как это:

while($row = $result2->fetch_assoc()) {
     echo $str;
}

но вывод отображается так:

 $row["AccountID"].$row["CurrencyID"] 

Это не то, что мне нужно, как я могу заставить его выполнить код внутри строки и позволить ему читать слово "$ row" как переменную, а не строку?

Ответы [ 3 ]

0 голосов
/ 09 ноября 2018

это способ:

sprintf('%d%d', $row["AccountID"], $row["CurrencyID"]);

% d - целочисленный формат

0 голосов
/ 09 ноября 2018

Вы можете найти и заменить значения в строке, используя этот метод взрыва / взрыва.

$str = '$row["AccountID"].$row["CurrencyID"]'; 

//first remove the '.'
$str = implode('', explode('.', $str));

while($row = $result2->fetch_assoc()) {
  $row_str = $str;
  foreach($row as $field=>$value){
     $row_str = implode($value, explode('$row["'.$field.'"]', $row_str ));
  }
  echo $row_str;
}
0 голосов
/ 09 ноября 2018

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

Причина, по которой $str = "$row"; работает, заключается в том, что PHP оценивает "$row" еще до того, как строка будет назначена.Переменная $row не находится в $str, значение имеет.

Обычный вариант использования - сохранение синтаксиса шаблона и замена заполнителей в вашем представлении.Возможные заполнители: %AccountID% или {{AccountID}}.Что бы вы ни предпочли, а затем использовать замену строк в тех заполнителях со значениями $row внутри цикла:

$template = "The account ID is %AccountID%.";

...

while($row = $result2->fetch_assoc()) {
     echo str_replace('%AccountID%', $row['AccountID'], $template);
}

Я бы настоятельно рекомендовал вам не полагаться на eval() здесь, потому что это оставит васоткрыт для опасных инъекций, когда у вас нет полного контроля над входом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...