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"
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...).
Kiitoksia, toimii muuten hyvin mutta [ ja ] merkeillä ei.
En osaa korjata itse kun en tajua tuosta mitään :/
josko näin
"/(\w*?)(\[)(\w*?)(\])(\w*?(\s|$))/"
tai jos tarkemmin ajettelee niin:
$text = preg_replace("@\[.*?\]@s", "", $text);
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
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]|"
Aihe on jo aika vanha, joten et voi enää vastata siihen.