2012-02-14 89 views

回答

1
$str = 'a hello a some a'; 
$i = 0; 

while (strpos($str, 'a') !== false) 
{ 
    $str = preg_replace('/a/', $i++, $str, 1); 
} 

echo $str; 
+0

它的工作原理,我們不能做到這一點與str_replace函數? – Poonam 2012-02-14 07:29:42

+0

@Poonam不,因爲你不能限制'str_replace'只替換一個實例,並且如果你一次性替換它們,它永遠不會增加'$ i' – Joe 2012-02-14 07:31:06

-1

嘿,你可以做很多的使用preg_replace函數相同:

$num = 1; 
while(strpos($str, $findme) !==) { 
preg_replace("/$findme/", $num++, $str, 1); 
} 

這樣做是循環的,雖然只要能找到你的字符串和由$ NUM增量替換它。電賀

+0

你的正則表達式會從字面上搜索''findme'''。你可以用雙引號括起來:'「/ $ findme /」'或者將它連接到:''/'。 $ findme。 '/'' – Joe 2012-02-14 07:31:54

+0

謝謝喬。編輯它。 (想用雙引號) – CyrillC 2012-02-14 07:39:16

+0

這段代碼什麼都不會做。正確的是'$ str = preg_replace(「/ $ findme /」,$ num ++,$ str,1);' – va5ja 2014-03-25 09:36:14

0

如果我正確地理解你的問題......

<?php 
//data resides in data.txt 
$file = file('data.txt'); 
//new data will be pushed into here. 
$new = array(); 
//fill up the array 
foreach($file as $fK =>$fV) $new[] = (substr($fV, 0, 1)==">")? str_replace("num", $fK/2, $fV) : $fV; 
//optionally print it out in the browser. 
echo "<pre>"; 
print_r($new); 
echo "</pre>"; 
//optionally write to file... 
$output = fopen("output.txt", 'w'); 
foreach($new as $n) fwrite($output, $n); 
fclose($output); 
-1

這裏是我的兩分錢

function str_replace_once($correct, $wrong, $haystack) { 
    $wrong_string = '/' . $wrong . '/'; 
    return preg_replace($wrong_string, $correct, $haystack, 1); 
} 

上述功能是用來替換的字符串occurence只有一次,但你可以自由地編輯該功能以執行每一個其他可能的操作。

0
preg_replace(array_fill(0, 5, '/'.$findme.'/'), range(1, 5), $string, 1); 

例子:

preg_replace(array_fill(0, 5, '/\?/'), range(1, 5), 'a b ? c ? d ? e f g ? h ?', 1); 

輸出

a b 1 c 2 d 3 e f g 4 h 5