【问题标题】:PHP str_replace() - Replace with space alternative?PHP str_replace() - 替换为空格?
【发布时间】:2016-10-21 04:02:03
【问题描述】:

我今天发现需要使用 str_replace() 将字符串中的所有连字符替换为空格。很简单:

$string = "Some-test-string";
$string = str_replace('-', ' ', $string);

问题是,在str_replace() 的“替换”部分使用' '(带有空格的字符串)感觉很脏。看起来也很脆弱……看起来也很丑。

没有更好的选择吗?我尝试在“替换”部分使用正则表达式模式,但这不起作用,它是字面的。

理想情况下,如果可能的话,这样的事情会很棒:

$string = "Some-test-string";
$string = str_replace('-', '/\s/', $string);

谢谢!

已编辑:根据建议将所有 preg_replace() 调用替换为 str_replace()。

【问题讨论】:

  • 您可以使用十六进制值作为空格:preg_replace("/[-]+/", "\x20", $string);,但我不知道这样是否更简洁
  • 使用 str_replace 会更好。只要它有效且易于理解,我就不会担心它看起来脆弱或丑陋。我会使用 ' ' 而不是 " "。
  • Abdullah Bakhsh - 替换为文字 \x20.. 我应该澄清我想要字符串中的空格......只是试图找到一种替代方法来表示 preg_match() 中的替换打电话。
  • 感谢 John Fawcett - 在我发布此内容几分钟后,我将其更改为 str_replace,因为我意识到该模式还不够先进,需要 preg_match()... 我将把我的问题更新为反映这一点!
  • 好吧,\s 是空格、制表符或换行符,PHP 无法知道您期望的字符(或者我不知道)。 ' ' 应该没问题,如果这是用于浏览器的 HTML 实体,您可以输入   

标签: php string preg-replace str-replace


【解决方案1】:

我认为在这种情况下没有理由使用正则表达式。为什么不使用更简单的功能,例如strtr()?

$string = "Some-test-string";
$string = strtr($string, '-', ' ');

【讨论】:

  • 谢谢 ShiraNai7 - 一旦我意识到正则表达式模式太简单以至于不需要 preg_replace(),我就已经转而使用 str_replace()。我已经更新了我的问题以反映这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-11
  • 1970-01-01
  • 1970-01-01
  • 2013-07-09
  • 1970-01-01
相关资源
最近更新 更多