在php中,如何只在字符串的前3个字符中执行替换?
所以:
$str = /pr/printers
Replace 'pr' with 'or'. So its -> /or/printers.
发生在我身上的是,打印机中的pr也在被替换。所以我最终会以/或/或者结束。怎么办呢?
答案 0 :(得分:2)
使用str_replace()
:
$str = '/pr/printers';
$str = str_replace("/pr/","/or/",$str);
echo $str;
使用preg_replace()
(第4个参数是我设置为1的限制)“
$str = '/pr/printers';
$str = preg_replace("/pr/","or",$str,1);
echo $str;
答案 1 :(得分:2)
$str = '/pr/printers';
$newStr = str_replace('pr', 'or', mb_substr($str, 0, 3)) . mb_substr($str, 3);
答案 2 :(得分:2)
只是我或大多数答案未能解决真正的问题?如果字符串的其余部分匹配会怎么样?他只想要前3个字符在玩。我想我看到一个preg评论提到使用^
这也是有道理的。
$originalStr = '/pr/printers';
$prefix = substr($originalStr, 0, 3);
$newStr = str_replace("/pr","/or", $prefix) . substr($originalStr, 3);
echo $newStr;
答案 3 :(得分:0)
$ new = str_replace('/ pr /','/ or /','/ pr / printers');
你也可以使用这样的正则表达式: http://www.laprbass.com/RAY_temp_norman.php
<?php // RAY_temp_norman.php
error_reporting(E_ALL);
$rgx
= '#' // REGEX DELIMITER
. '^' // START OF STRING
. '/pr' // PATTERN TO MATCH
. '#' // REGEX DELIMITER
. 'i' // OPTIONAL- CASE-INSENSITIVE
;
$str = '/pr/printers';
$rep = '/or';
$new = preg_replace($rgx, $rep, $str);
var_dump($new);
答案 4 :(得分:0)
看一下使用正则表达式,一个可怕的野兽,但如果你要做更多的一般文本操作,曾经掌握了非常强大的功能: