【问题标题】:Replace string if specific characters found in php如果在 php 中找到特定字符,则替换字符串
【发布时间】:2013-02-18 10:41:52
【问题描述】:

如果找到特定字符,我想替换这些字符。
例如我的文本具有以下值:

$text = "@abc hi there!! @jkl,@xyz how are you?";

这里我想替换所有以'@'开头的单词,输出应该是这样的

$text = "<a href='abc'>@abc</a> hi there!! <a href='jkl>@jkl</a>,<a href='xyz'>@xyz</a> how are you?";  

单词可以用空格或逗号分隔(带/不带空格)。我想用"&lt;a href='abc'&gt;@abc&lt;/a&gt;"替换"@abc"

提前致谢

【问题讨论】:

  • 我想用“@abc”替换“@abc”。??
  • preg_replace使用正则表达式
  • 我尝试使用两次爆炸功能。一个用于逗号,另一个用于空格。但这似乎不是一个好的选择。因为我将不得不将单词内爆以再次将其转换为字符串。
  • @fab - 请给我代码,因为我不擅长正则表达式。

标签: php


【解决方案1】:

使用正则表达式:

$str = preg_replace("/@(\w+)/", "<a href='$1'>@$1</a>", $text);

请注意,\w+ 位于括号中,这会导致它被捕获。另请注意,它会因来自不同语言的字符而失败(不适用于@שלום)。

【讨论】:

    【解决方案2】:
    $text = preg_replace('/@(\w+)/',"<a href='$1'>@$1</a>",$text);
    

    【讨论】:

    • 您的代码不正确,但您已修复它(也在宽限期结束之前)。编辑您的答案,以便我更改投票。
    • 大声笑你是认真的吗?我的捕获量稍大,而您的则有语法错误。所以我编辑了你的,你对我的投了反对票。搞笑。
    • 在你编辑我的(或你的)之前,我投了反对票。除非您编辑答案,否则我的投票将锁定在当前状态,即使我想也无法更改。编辑您的答案,在 cmets 中 ping 我,我将更改我的投票。这没什么大不了的......
    • 我知道这没什么大不了的。我已经过了两个代表点对我有意义的地步。考虑到您的回答质量,您的反对意见很有趣。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2021-12-22
    • 2014-10-20
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多