Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: [PHP] str_replace ensimmäiseen esiintymään sanasta

Petja [02.03.2011 15:48:49]

#

Tässä olisi taas yksi näitä minun ikuisia kysymyksiä. Miten saada PHP:llä tehtyä str_replace vain ensimmäiseen esiintymään sanasta?

Chiman [02.03.2011 15:58:22]

#

Ei mitenkään, ellet muokkaa itse PHP:tä.

Käytä tuon funktion tilalla vaikka tätä ja aseta limit ykköseksi: https://www.php.net/manual/en/function.preg-replace.php

Metabolix [02.03.2011 16:18:43]

#

Voihan sen helposti itsekin toteuttaa. Tässä on kaksi kommenteilla selostettua mallia:

function str_replace_kerran($haku, $korvaus, $teksti) {
  // Hae strpos-funktiolla tekstin paikka.
  // Jos ei löytynyt, palauta $teksti muuttumattomana.
  // Muuten erota substr-funktiolla $tekstistä $alku ja $loppu.
  // Palauta $alku.$korvaus.$loppu;
}
function str_replace_kerran($haku, $korvaus, $teksti) {
  // Katkaise $teksti kahteen osaan explode-funktiolla (erottimena $haku).
  // Palauta osat yhdistettynä implode-funktiolla (erottimena $korvaus).
}

Kannattaa harjoituksena toteuttaa molemmat. Muista jatkossa, että kaikkea ei tarvitse saada valmiina käteen, vaan jotain voi itsekin tehdä.

esajeejee [13.03.2011 03:32:17]

#

$raja = 1;
str_replace( "jk", "jk", "jk", $raja );

jos siis php versio > 5

"Turha" muuttuja siksi koska toi vika parametri välitetään viittauksella eikä arvolla.

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

Teuro [13.03.2011 08:21:45]

#

esajeejee kirjoitti:

"Turha" muuttuja siksi koska toi vika parametri välitetään viittauksella eikä arvolla.

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

Nimen count ja php.net mukaan kyse on suoritettujen korvausten määrästä ei suinkaan rajasta.

Alla vielä koodi joka vahvistaa asian.

<?php
$data = file_get_contents("autot.txt");

$hakusana = "Chrysler";
$korvattava = "Jeep";

$maara = 1; //Ei vaikuta seuraavaan koodiriviin mitenkään, mutta voi sekoittaa koodin lukijaa.

str_replace($hakusana, $korvattava, $data, $maara);

echo "Datasta {$data} korvattiin {$maara} kertaa <b>{$hakusana}</b> sanalla <b>{$korvattava}</b>";
*** autot.txt
Chrysler
Jeep
Lada
Nissan
Chrysler
Plymouth
Dodge
Fiat
Alfa Romeo
Chrysler

Tulosteeksi tulee tällöin

testisivu kirjoitti:

Datasta Chrysler Jeep Lada Nissan Chrysler Plymouth Dodge Fiat Alfa Romeo Chrysler korvattiin 3 kertaa Chrysler sanalla Jeep

makumaku [13.03.2011 08:23:40]

#

Kyllähän jo tuo pastattu php:n ohjekin sanoo, että parametri on count (suomeksi laskuri), eikä mikään raja.

Muokattu : Noniin, Teuro ehti sanoakin jo saman.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta