如何在字符串中查找特定单词并在php中的字符串前添加字符?

时间:2014-07-06 10:16:03

标签: php string

我有一个字符串This is a string,我想在一个单词之前添加一个字符#,但我不知道如何在php中这样做。

我试过这段代码:

$string = 'This is a string';

substr_replace($string, '#', stripos($string, 'a'), 0);

它运行正常,但问题是如果我想在'is'之前添加'#',那么它将提供以下输出。

Th#is is a string a string

我正在寻找一个可以找到特定单词的函数,并在该单词之前添加一个字符。

3 个答案:

答案 0 :(得分:1)

$string = preg_replace('/\bis\b/i', '#$0', $string);

\b表示字边界/i使整个事件不区分大小写(可选,但可能是个好主意)。详细了解正则表达式here,以便根据需要进行更改。

答案 1 :(得分:0)

是的,你试过用strrpos()代替stripos()。

$newstr=substr_replace($temp, '#', strrpos($temp, 'is'),0);

参考http://www.w3schools.com/php/func_string_strpos.asp了解差异并学习其他strpos()函数。

答案 2 :(得分:0)

使用preg_replace执行此任务。同时为此PHP函数的 limit param 指定1,以将可能的最大替换限制为1.

以下是如何实现此功能的示例:

$string = 'This is a string and it is working fine';

$result = preg_replace('/\bis\b/i', '#$0', $string, 1);

在这种情况下,$ result将包含以下内容:

This #is a string and it is working fine

使用的正则表达式('/\bis\b/i')由以下语法组成:

// =>封闭的delimiters(模式之前和之后)

\b =>指定word boundary condition

/i => (可选)这是一个pattern modifier,它将模式设置为不区分大小写(无壳)

/u => (可选 - 未包含在示例模式中)这是另一个pattern modifier,它将字符串视为UTF-8。如果你有包含UTF-8编码字符的字符串,请使用。

关于正则表达式分隔符的一点注意事项: 您也可以使用其他字符作为分隔符,而不是斜杠(/)。哈希标志(#)和波浪号(〜)。如果需要在模式内匹配分隔符,则必须使用反斜杠对其进行转义。如果它经常出现在模式中,那么选择另一个分隔符是个好主意,以提高可读性。 (来源:http://php.net/regexp.reference.delimiters