Merkkijonosta lainausmerkkien poistaminen

PHP:
Merkkijonosta lainausmerkkien poistaminen

Kuinka:

Tässä on suoraviivainen esimerkki PHP:n sisäänrakennettuja funktioita käyttäen:

$quotedString = "'Hei,' hän sanoi, \"Onpa hieno päivä!\"";
$unquotedString = str_replace(array("'", "\""), '', $quotedString);
echo $unquotedString; // Tulostaa: Hei, hän sanoi, Onpa hieno päivä!

Yksinkertaista, eikö? Tämä str_replace() -funktio ottaa taulukon merkkejä, jotka poistetaan merkkijonosta, mukaan lukien sekä yksinkertaiset että kaksinkertaiset lainausmerkit.

Syväsukellus

PHP:n alkuaikoina kehittäjien piti olla erityisen varovaisia merkkijonoihin sisältyvien lainausmerkkien kanssa, etenkin syötettäessä tietoja tietokantaan. Huolimattomasti käsitellyt lainausmerkit saattoivat johtaa SQL-injektiohyökkäyksiin. Tästä syystä otettiin käyttöön taikamerkit (magic quotes), ominaisuus, joka automaattisesti lisäsi koodinpätkiä syötetietoihin. Se kuitenkin vanhentui ja poistettiin käytöstä, koska se kannusti huonoihin koodauskäytäntöihin ja turvallisuusongelmiin.

Nyt käytämme funktioita kuten str_replace() tai regexiä preg_replace()-funktion kanssa monimutkaisempien mallien varten. Tässä on regex-esimerkki:

$quotedString = "'Hei,' hän sanoi, \"Onpa hieno päivä!\"";
$unquotedString = preg_replace('/[\'"]/', '', $quotedString);
echo $unquotedString;

JSON-tiedon yhteydessä saatat käyttää json_encode()-funktiota vaihtoehdoilla, kuten JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE, välttääksesi ylimääräisiä kenoviivoja lainausmerkeissäsi.

Toteutusta suunnitellessa harkitse reunatapauksia. Entä jos merkkijonosi on tarkoitettu sisältämään tiettyjä lainausmerkkejä, kuten dialogia tarinassa tai tuumamittoja? Konteksti on tärkeä, joten räätälöi lainausmerkkiesi poisto datan tarkoitetun käytön mukaan.

Katso myös