【问题标题】:PHP - Find word in variable and replace with anotherPHP - 在变量中查找单词并替换为另一个
【发布时间】:2014-07-30 21:00:28
【问题描述】:

所以我有一个脚本,它基本上从文本区域获取输入,我想在变量(字符串中)中找到一个特定的单词并将其替换为另一个。

到目前为止,我遇到了各种各样的错误。

例如,我想找到 **contact 并将其替换为 **/page/contact 等。

我会继续尝试并编辑我在这里遇到的错误。我不知道我做错了什么。

编辑 1

我来了

警告:preg_replace() [function.preg-replace]:第 57 行 /path/.../.../*.php 中的未知修饰符 'a'

使用时

$string = preg_replace("**example", "**/page/example", $string);

【问题讨论】:

  • 能分享一下代码吗?
  • 除非您向我们展示您正在使用的代码错误,否则我们无法为您提供帮助。一个简单的str_replace 有什么问题?
  • 抱歉,刚刚编辑我的代码以再次出现错误。我已经编辑了它们。
  • 不要在这里使用preg_replace。您没有使用正则表达式。只需使用str_replace

标签: php replace


【解决方案1】:

使用str_replace

$string = str_replace('**contact', '**/page/contact', $string);

【讨论】:

  • @Dan: str_replace 没有任何“修饰符”。您确定您完全尝试过吗?注意这里使用的函数。这是str_replace(不是preg_replace,就像你的代码一样)。
  • 对不起,我使用的是 preg 而不是 str。哎呀!非常快速的帮助,谢谢大家 :) 现已修复。不过现在只能回答,还要再等8分钟..? ://
【解决方案2】:

有更多的上下文会很有帮助。向我们提供为您执行此任务的相关 PHP 代码,以及您希望接收的文本内容示例,以及您希望如何接收该内容(它是通过用户输入从 Web 发送的吗?从 CSV 文件中提取?等等)

您是否正在寻找替换一般文本模式的方法,或者您是否确切知道需要替换哪些文本?例如,给定您提供的示例(将 **contact 替换为 **/page/contact),如果您可以期望得到这个确切的字符串,那么您可以使用 PHP 提供的任何字符串替换函数。

如果您正在处理一般的文本模式,那么您可能需要使用正则表达式。

【讨论】:

  • 感谢您的输入,上面 Feek 和 Rocket Hazmat 的回答正是我所需要的。当我需要使用 str 时,我正在使用 preg 。我正在寻找一个特定的输入,以便在变量中替换为许多其他文本。
【解决方案3】:

preg_replace 修饰符是http://php.net/manual/en/reference.pcre.pattern.modifiers.php e,x,s,m 和 i

您的模式中的第一个字符是星号 * 后跟另一个然后是 ex

**ex

这都是合法的,但解释器停在无法识别的修饰符a 并显示错误。

将其设置为 preg_replace 的正确方法是,但 * 也是保留字符,因此您需要对其进行转义。

 preg_replace("/\*\*example/", "**/page/example", $string);

 preg_replace("~\*\*example~", "**/page/example", $string);

或用于**联系人

 preg_replace("/\*\*contact/", "**/page/contact", $string);

【讨论】:

  • 感谢您的意见,实际上真的很有帮助 :) 我会投票,但我还不能。使用 str 而不是 preg 有什么好处或最佳实践吗?
  • 对于简单的替换.. 如果你想锻炼肌肉或有一些复杂的情况,请使用 str_replace,使用正则表达式 (preg_replace)
  • str_replace 通常更快,因为它不太复杂
猜你喜欢
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 2018-05-16
  • 1970-01-01
  • 2015-03-02
  • 2015-01-05
  • 2020-09-01
  • 1970-01-01
相关资源
最近更新 更多