用字符串敏感行为替换字符串php中的关键字

时间:2018-02-19 17:31:16

标签: php regex

Php的哪些功能允许替换字符串中的搜索关键字?假设我们有一个字符串“你好!你好吗?”如果有人搜索“how”将呈现这个完整的字符串,并替换为:Hello! 你是如何

Hello! <b>How</b> are you?

我尝试使用str_replace,虽然它区分大小写,所以肯定无法正常工作。然后我尝试了str_ireplace它工作但问题是替换它用所有小字符替换它。这是一段代码:

$myString = "Hello! How are you?";
$toSearch = "how";
$newString = str_ireplace($toSearch, '<b>'.$toString.'</b>', $myString);

结果是:你好! 你是怎么的?

Hello! <b>how</b> are you?

我希望这不应该像看起来那样棘手。其中一个是在我们的浏览器中:

enter image description here

2 个答案:

答案 0 :(得分:3)

您正在寻找preg_replace()

$myString = "Hello! How are you?";
$toSearch = "how";

// Build a regex from $toSearch
$re = '/'.preg_quote($toSearch, '/').'/i';       // i == ignore case

// Use $re to search, replace each matching substring
// with itself surrounded by <b> and </b>
$newString = preg_replace($re, '<b>$0</b>', $myString);

如果您只需查找完整单词,则可以使用:

$re = '/\b'.preg_quote($toSearch, '\b/').'/i';

详细了解preg_replace()preg_quote()PCRE patterns以及modifiers

答案 1 :(得分:0)

$newString = str_ireplace($toSearch, '<b>'.ucwords($toString).'</b>', $myString);

这就是你想要的吗?

以上代码将使用大写单词

替换关键字