在 php 中,如何仅在字符串的前 3 个字符中执行替换?
所以:
$str = /pr/printers
Replace 'pr' with 'or'. So its -> /or/printers.
发生在我身上的是,打印机中的 pr 也被替换了。所以我以/或/orinters结束。如何才能做到这一点?
在 php 中,如何仅在字符串的前 3 个字符中执行替换?
所以:
$str = /pr/printers
Replace 'pr' with 'or'. So its -> /or/printers.
发生在我身上的是,打印机中的 pr 也被替换了。所以我以/或/orinters结束。如何才能做到这一点?
只有我还是大多数答案都无法解决真正的问题?如果字符串的其余部分得到匹配怎么办。他只希望前 3 个角色在场。我想我看到一个 preg 评论提到使用^
它也是有道理的。
$originalStr = '/pr/printers';
$prefix = substr($originalStr, 0, 3);
$newStr = str_replace("/pr","/or", $prefix) . substr($originalStr, 3);
echo $newStr;
使用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;
$str = '/pr/printers';
$newStr = str_replace('pr', 'or', mb_substr($str, 0, 3)) . mb_substr($str, 3);
$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);
看看使用正则表达式,这是一种可怕的野兽,但如果你要进行更一般的文本操作,一旦掌握了它就非常强大: