1

在 php 中,如何仅在字符串的前 3 个字符中执行替换?

所以:

$str = /pr/printers

Replace 'pr' with 'or'. So its -> /or/printers.

发生在我身上的是,打印机中的 pr 也被替换了。所以我以/或/orinters结束。如何才能做到这一点?

4

5 回答 5

3

只有我还是大多数答案都无法解决真正的问题?如果字符串的其余部分得到匹配怎么办。他只希望前 3 个角色在场。我想我看到一个 preg 评论提到使用^它也是有道理的。

$originalStr = '/pr/printers';
$prefix = substr($originalStr, 0, 3);
$newStr = str_replace("/pr","/or", $prefix) . substr($originalStr, 3);
echo $newStr;
于 2012-12-21T15:23:04.900 回答
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;
于 2012-12-21T15:18:41.353 回答
2
$str = '/pr/printers';

$newStr = str_replace('pr', 'or', mb_substr($str, 0, 3)) . mb_substr($str, 3);
于 2012-12-21T15:21:59.400 回答
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);
于 2012-12-21T15:18:37.317 回答
0

看看使用正则表达式,这是一种可怕的野兽,但如果你要进行更一般的文本操作,一旦掌握了它就非常强大:

http://webcheatsheet.com/php/regular_expressions.php

于 2012-12-21T15:21:28.340 回答