str_replace只在包含空格的字符串上

时间:2016-06-23 11:34:41

标签: php

我有一个替换代码,用XD笑脸代替XD的所有实例......事情是,如果链接包含字符串'XD',它会断开链接。

我希望它只替换XD,如果它后跟一个空格,就像'XD'一样,除了我似乎无法让它工作(尝试& nbsp,/ \ s /和{{ 1}},如'XD& nbsp')

我很可能会得到一些非常明显错误的东西,但我找不到任何帮助(所有这些似乎都是关于删除空格,不需要它),所以我希望有人可以帮助我。

以下是供参考的代码:

 

内容是用户输入。谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

你应该用%

包围“XD”
$content= str_replace("%XD%", "<img src=\"images/smilies/icon_xd.gif\" alt=\"XD\">", $content);

编辑: 或者使用preg_replace

preg_replace("/XD/", "<img src=\"images/smilies/icon_xd.gif\" alt=\"XD\">", $content);

答案 1 :(得分:0)

所以你只想单独替换XD?

preg_replace('/\bXD\b/', '(ಠ‿ಠ)', "Then I was like XD")

使用\b来观察字边界而不是\s。这意味着它也可以在字符串的开头和结尾处工作,就像在我的例子中一样。

preg_replace()有两个常见问题:

  • 分隔符字符,我按惯例使用/,但在我自己的代码中,我更喜欢%。您可以将正则表达式编写为'%\bXD\b%',其含义相同。
  • 转义反斜杠,我使用了单引号字符串,因此我不必在\b中转义反斜杠。如果你使用双qoutes,你必须逃避它,如下所示:"/\\bXD\\b/"