【问题标题】:Changing printf() to print() safely?安全地将 printf() 更改为 print()?
【发布时间】:2012-10-22 20:18:46
【问题描述】:

所以我出于某种原因采用printf() 作为echoprint 的替代品

我没有任何需要printf($var); 的格式化字符串,因此它们可以(并且应该)全部转换为print($var);

既然他们都有相同的语法 printf($this.'that');,我可以只做一个文件夹范围的“查找和替换”来安全地将 printf( 更改为 print( 吗?

【问题讨论】:

  • 当然,为什么不呢?最好是使用基于正则表达式的修改工具。检查kfilereplace,为我服务了无数次...
  • 因为事情确实会破裂。不是“经常”,但是当某些东西停止工作时,我将printf 替换为printecho,如果这是问题所在,它通常可以工作。所以它“有效”我只是希望它更稳定
  • so they could (and should) all be turned into print($var); [需要引用]

标签: php printing printf echo


【解决方案1】:

如果您对printf 的调用不希望进行格式化,那么您将会遇到问题,并且确实应该将它们更改为print。例如,如果您对printf 的输入包含% 字符,您将收到错误消息,而不是有关格式错误的参数字符串。

$something = 'Results: 10% complete.';
print($something);
printf($something); // ERROR: printf() thinks it should replace "% c"
                    //        with an integer not passed as a second argument
printf('%s',$something); // Pass unquoted input as a formatted argument

因此,基本上,如果您的代码从未使用过有意识格式化输入的 printf,您将受益于代码中的查找/替换以将所有这些调用转换为 print

【讨论】:

  • 感谢您的澄清!我很想知道我得到的几个错误是否是因为字符串中的%...谢谢!
  • 不客气!可能是这样:未引用的输入很容易产生像这样的奇怪副作用。
【解决方案2】:

如果你确定你不在任何地方使用 printf 功能,并且 print 就足够了,那么你可以用简单的搜索/替换来替换它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 2018-02-26
    相关资源
    最近更新 更多