【问题标题】:Dollar sign in text when passing variable传递变量时文本中的美元符号
【发布时间】:2012-04-17 03:49:58
【问题描述】:

我得到了棘手/旧的 php 代码,我只是尝试清理它,修复一些错误,等等。服务器也使用 php 4。

问题如下:

我从数据库中取回一些数据,然后处理这些数据并显示它们。如果结果包含美元符号,PHP 会尝试将其作为变量处理。

例如:

$result  = $this->sqlresult('SELECT * From Tablename  where id=15');
$details = $result['description'];
echo $details;

让我举个例子,当 $result['description'] 包含任何错误的文本时,例如“这本书售价 148 美元”: 它通常不显示任何内容或显示错误的文本,例如 This book is available for 48.

我在细节上尝试了一个 preg 替换函数,我正在寻找 char changes 或 html_special_chars ,并且也尝试了这些,但没有发生任何事情,或者没有出现原始文本。

preg_replace('/\$ /','/&#36/;' $details);

我知道,传递变量的双引号会导致类似的错误。我也检查了this topic,但这不是我的解决方案。

当前的解决方案只是在 $ 符号的价格之间添加一个额外的空格,但我正在寻找一个更好的解决方案。

preg_replace('/\$/','/\$ /' $details);

【问题讨论】:

  • 你的例子对我来说看起来不错。你能准确解释一下它是如何不起作用的吗?
  • 是的,您能再显示一些代码吗?例如,您如何处理 $details?
  • 如果 $result['description'] 包含任何带有 $ 符号的文本,例如“这次旅行花费 $148”,就会出现问题。

标签: php4


【解决方案1】:

您是否尝试过使用转义字符?这本书是 \$148。

【讨论】:

  • preg_replace ,我已经尝试过,正是尝试这样做。没用。
  • 据我所知,这应该不是问题。也许您尝试这种方式虽然我确定它不会起作用,但在您尝试正确之前谁知道? echo '"' . $details . '"';
  • 你是说这个吗?preg_replace("/\\\$/", "\\$", $details);是的,我试过了。
猜你喜欢
  • 1970-01-01
  • 2011-12-17
  • 2012-07-31
  • 2012-09-05
  • 2019-01-26
  • 1970-01-01
相关资源
最近更新 更多