Czy da się automatycznie bez pętli wstawić za pomocą funkcji str_replace całą tablicę do tekstu?

0

Mam taki problem otóż mam w tablicy
taką tablicę

 $a[0] = "tomek";
$a[1] = "tomi";
$tekst = "jan % był % dobry";
//$d = 0;
//while ($d < count($a) ) {
$newstr .= str_replace("%", $a, $tekst);

//$d++;
//}

I teraz chodzi mi o to, żeby po tej operacji otrzymać następujący string jan tomek był tomi dobry, na ten moment to nie działa.

0

Dlaczego warunek bez pętli? Koniec końców i tak pętla siłą rzeczy musi być, czy to jawnie czy nie.

0

Można tak:

<?php

$a[0] = "tomek";
$a[1] = "tomi";
$tekst = "jan % był % dobry";

$newstr = str_replace_array("%", $a, $tekst);

echo "'".$newstr."'";

function str_replace_array($from, $to, $subject) {
  $result = $subject;
  
  for($i = 0, $cnt = count($to); $i < $cnt; $i++) {
  	$result = str_replace_first($from, $to[$i], $result);
  }	  
  
  return $result;
}

function str_replace_first($from, $to, $subject) {

  $pos = strpos($subject, $from);
  if ($pos !== false) {
    $result = substr_replace($subject, $to, $pos, strlen($from));
  } else {
  	$result = $subject;
  }
  
  return $result;
}	

http://ideone.com/RMzK6R

0

można używając goto :D albo rekurencji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1