Skifte ut {TEXT} med $text

kongen

kongemedlem
Jeg har denne koden

PHP:
$nytt = "rent";
$gammelt = "støvete";
$tekst = "Alt nytt er {NYTT} og alt gammelt er {GAMMELT}";

Inne i $tekst så vil jeg skifte ut {NYTT} med $nytt, og {GAMMELT} med $gammelt.
Hvis $nytt er blank så skal {NYTT} skiftes ut med "pent".
Hvis $gammelt er blank så skal {GAMMELT} skiftes ut med "slitt".

Hvordan kan jeg gjøre det med php?
 

adeneo

Medlem
Her har du litt å se på, og søke opp diverse ting osv. Det bør være dagens lærdom i hvor mye rare ting PHP har innebygget.

PHP:
$nytt    = "rent"; 
$gammelt = "støvete";
$tekst   = "Alt nytt er {NYTT} og alt gammelt er {GAMMELT}";
$tom     = array("nytt" => "pent", "gammelt" => "slitt");

$tekst = preg_replace_callback( "/{(NYTT|GAMMELT)}/", "cb", $tekst);

function cb($x) {
    global $nytt, $gammelt, $tom;
    
    $var = strtolower(isset($x[1]) ? $x[1] : "");
    $ret = isset($$var) && !empty($$var) ? $$var : $tom[$var];
    
    return $ret;
}
 

drlinux

Konsulent i PHP og Linux
PHP:
$nytt = "rent";
$gammelt = "støvete";
$tekst = "Alt nytt er {NYTT} og alt gammelt er {GAMMELT}";

if (empty($nytt)) $nytt = 'pent';
if (empty($gammelt)) $gammelt = 'slitt';

$nytekst = str_replace('{NYTT}', $nytt, str_replace('{GAMMELT}', $gammelt, $tekst));

echo $nytekst . "\n";
 

Pong

Jeg selger sʇɥƃıluʍop :)
Misliker litt functions kun for å behandle noe tekst, som altså skal kjøres sammen med array_map osv, så jeg ville skrevet noe som dette:

$nytt = "rent";
$gammelt = "støvete";

$tekst = "Alt nytt er {NYTT} og alt gammelt er {GAMMELT}";
$rep = array(
'{NYTT}' => ($nytt == '' ? 'pent' : $nytt),
'{GAMMELT}' => ($gammelt == '' ? 'slitt' : $gammelt)
);
foreach( $rep as $s=>$r ) {
$tekst = str_replace( $s, $r, $tekst );
}
 

kongen

kongemedlem
Takk for svar :)

Hvilken av disse metodene bruker minst serverressurser og er kjappest?
 

Pong

Jeg selger sʇɥƃıluʍop :)
Ressurser skal du måle i timeforbruk i å skrive funksjonen og lese+forstå+tilpasse senere.
Det er veldig få ganger mikrosekundene dine sparer deg for penger eller er en forutsetning.
Programmerer-tid er dyrere enn CPU-tid.
 
Topp