Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: merkkijonon poistaminen tiettyjen merkkien väliltä

ottis [11.05.2004 16:13:35]

#

Hei

Mitenkäs saan poistettua tietyn merkkijonon muuttujan arvosta merkkien x ja y väliltä niin että x ja y poistuu myös.
esimerkki: "Simo meni kalaan"
m ja i välissä olevat merkit poistettu: "Simo kalaan"

leftover [11.05.2004 16:46:30]

#

Regexpeillähän tuo onnistuu, jotenkin näin:

<?php
$teksti = "Simo meni kalaan";
$muutettu = preg_replace("/(\w*?)(m)(\w*?)(i)(\w*?(\s|$))/", "$1$5", $teksti);
echo $muutettu;
/*
Pitäisi palauttaa "Si kalaan" mutta palauttaa "Simo kalaan", säädä itse :D
*/
?>

EDIT: vika on \w joka merkkaa pelkästään kirjaimia. jos haluat että se ei pysähdy välilyönteihin, käytä w:n tilalla pistettä ja lisää viimeisen kauttaviivan (/) jälkeen s-kirjain (kait...).

ottis [11.05.2004 18:27:24]

#

Kiitoksia, toimii muuten hyvin mutta [ ja ] merkeillä ei.
En osaa korjata itse kun en tajua tuosta mitään :/

folio [11.05.2004 19:27:41]

#

josko näin

"/(\w*?)(\[)(\w*?)(\])(\w*?(\s|$))/"

tai jos tarkemmin ajettelee niin:

$text = preg_replace("@\[.*?\]@s", "", $text);

leftover [12.05.2004 08:24:28]

#

ederth kirjoitti:

$text = preg_replace("@\[.*?\]@s", "", $text);

@-merkki onkin minulle entuudestaan tuntematon. Anteeksi, olen laiska enkä jaksa googlettaa joten haluaisitko kertoa pikaisesti @-merkin tarkoituksen?

Nopeasti pähkäilin että muutos koskisi vain täsmännyttä aluetta, muu osa merkkijonosta jätettäisiin koskemattomaksi mutta pikaiset testit sai aikaan vain järkyn nipun virheilmoituksia :D

folio [12.05.2004 10:51:00]

#

Siis olen vain tottunut käyttämään tuota @-merkkiä, toiminnan kannalta sillä ei mitään merkitystä. Paitsi että ei enää ole tarvetta lisätä backslashia /-merkin eteen.

Siis:

"/[1-9]/" vastaa samaa kuin
"@[1-9]@" tai
"|[1-9]|"

Vastaus

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

Tietoa sivustosta