# Skifte ut {TEXT} med $text

**URL:** <http://beta.webforumet.no/t/skifte-ut-text-med-text/21358>\
**Category:** Webutvikling\
**Tags:** php-sql-og-databaser\
**Created:** [juni 3, 2014, 5:23pm UTC](http://beta.webforumet.no/t/skifte-ut-text-med-text/21358 "2014-06-03T17:23:44Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![kongen](http://beta.webforumet.no/letter_avatar_proxy/v4/letter/k/b487fb/32.png) [@kongen](http://beta.webforumet.no/u/kongen)\
**Post date:** [juni 3, 2014, 5:23pm UTC](http://beta.webforumet.no/t/skifte-ut-text-med-text/21358/1 "2014-06-03T17:23:44Z")

</div>

Jeg har denne koden

[PHP]  
$nytt = “rent”;  
$gammelt = “støvete”;  
$tekst = “Alt nytt er {NYTT} og alt gammelt er {GAMMELT}”;  
[/PHP]

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?

---

<div class="post-metadata">

**Author:** ![adeneo](http://beta.webforumet.no/letter_avatar_proxy/v4/letter/a/258eb7/32.png) [@adeneo](http://beta.webforumet.no/u/adeneo)\
**Post date:** [juni 3, 2014, 6:08pm UTC](http://beta.webforumet.no/t/skifte-ut-text-med-text/21358/2 "2014-06-03T18:08:37Z")

</div>

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;

```

}[/PHP]

---

<div class="post-metadata">

**Author:** ![drlinux](http://beta.webforumet.no/letter_avatar_proxy/v4/letter/d/9dc877/32.png) [@drlinux](http://beta.webforumet.no/u/drlinux)\
**Post date:** [juni 3, 2014, 6:12pm UTC](http://beta.webforumet.no/t/skifte-ut-text-med-text/21358/3 "2014-06-03T18:12:38Z")

</div>

[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”;  
[/PHP]

---

<div class="post-metadata">

**Author:** ![Pong](http://beta.webforumet.no/letter_avatar_proxy/v4/letter/p/a3d4f5/32.png) [@Pong](http://beta.webforumet.no/u/Pong)\
**Post date:** [juni 3, 2014, 6:47pm UTC](http://beta.webforumet.no/t/skifte-ut-text-med-text/21358/4 "2014-06-03T18:47:36Z")

</div>

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 );  
}

---

<div class="post-metadata">

**Author:** ![kongen](http://beta.webforumet.no/letter_avatar_proxy/v4/letter/k/b487fb/32.png) [@kongen](http://beta.webforumet.no/u/kongen)\
**Post date:** [juni 7, 2014, 11:35am UTC](http://beta.webforumet.no/t/skifte-ut-text-med-text/21358/5 "2014-06-07T11:35:58Z")

</div>

Takk for svar 🙂

Hvilken av disse metodene bruker minst serverressurser og er kjappest?

---

<div class="post-metadata">

**Author:** ![drlinux](http://beta.webforumet.no/letter_avatar_proxy/v4/letter/d/9dc877/32.png) [@drlinux](http://beta.webforumet.no/u/drlinux)\
**Post date:** [juni 7, 2014, 1:59pm UTC](http://beta.webforumet.no/t/skifte-ut-text-med-text/21358/6 "2014-06-07T13:59:41Z")

</div>

Løsningen min over bruker veldig lite ressurser.

---

<div class="post-metadata">

**Author:** ![Pong](http://beta.webforumet.no/letter_avatar_proxy/v4/letter/p/a3d4f5/32.png) [@Pong](http://beta.webforumet.no/u/Pong)\
**Post date:** [juni 8, 2014, 7:30pm UTC](http://beta.webforumet.no/t/skifte-ut-text-med-text/21358/7 "2014-06-08T19:30:57Z")

</div>

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.
