Escape php quotes moja. Masomo ya PHP: aina tofauti, kutoroka, herufi maalum na sintaksia ya heredoc katika PHP. Wahusika maalum katika nukuu moja na mbili

Imepewa kamba kwenye python kama vile:

S = "Sentensi hii ina "nukuu" kadhaa ndani yake\n"

Ninataka kuunda nakala mpya ya kamba hii na nukuu zozote zilizotoroka (kwa matumizi ya baadaye katika Javascript). Kwa hivyo kwa mfano nataka kufanya hivi:

"Sentensi hii ina baadhi ya \"nukuu\" ndani yake\n"

Nilijaribu kutumia replace() kama:

S.Badilisha(""", "\"")

lakini inarudisha kamba ile ile. Kwa hivyo nilijaribu hii:

S.replace(""", "\\"")

lakini inarudisha nukuu zilizotoroka mara mbili kama:

"Sentensi hii ina baadhi ya \\"nukuu\\" ndani yake.\n"

Jinsi ya kubadilisha " na \" ?

SASISHA:

Nahitaji kama pato kutoka kwa maandishi haya ya nakala ambayo yanaonyesha nukuu na mistari mpya kama ilivyotoroka. Kwa maneno mengine, ninataka kuweza kunakili:

"Sentensi hii ina baadhi ya \"nukuu\" ndani yake.\n"

Nikitumia kamba mbichi na kuchapisha matokeo ni kwamba ninapata nukuu iliyotoroka vizuri, lakini laini mpya iliyotoroka haichapishi. Ikiwa sitatumia uchapishaji basi ninapata laini zangu mpya lakini kwa kutoroka mara mbili. Ninawezaje kuunda kamba ambayo ninaweza kunakili inayoonyesha kamba na nukuu?


2017-09-19 05:09

Majibu:

Halo, kawaida wakati wa kufanya kazi na Javascript mimi hutumia moduli ya json iliyotolewa na Python. Hii itaepuka mstari, na vile vile rundo la vitu vingine, kama mtumiaji2357112 alivyoonyesha.

Leta json string = "Sentensi hii ina baadhi ya "nukuu" ndani yake\n" json.dumps(string) #inakupa ""Sentensi hii ina baadhi ya \\"nukuu\\" ndani yake\\n""


2017-09-19 05:33

Jaribio lako la pili ni sahihi, lakini umechanganyikiwa na tofauti kati ya repr na str ya kamba. Njia ya kijinga zaidi ya kufanya njia ya pili ni kutumia "kamba mbichi":

>>> s = "Sentensi hii ina baadhi ya "nukuu" ndani yake\n" >>> chapa s Sentensi hii ina baadhi ya "nukuu" ndani yake >>> print s.replace(""", r"\"") Mfuatano # mbichi umetumika hapa Sentensi hii ina baadhi ya \"nukuu\" ndani yake >>> s.replace(""", r"\"") "Sentensi hii ina baadhi ya \\"nukuu\\" ndani yake\n"

Mistari ghafi ni WYSIWYG: mikwaju ya nyuma katika mfuatano wa chanzo ni herufi moja tu. Hii - kama ulivyogundua - ni rahisi kuchanganya vinginevyo ;-)

Kuchapisha kamba (matokeo ya pili hapo juu) inaonyesha kuwa ina herufi unazohitaji.

Bila kuchapishwa (matokeo ya mwisho hapo juu), Python inatumika repr() kwa thamani kabla ya kuionyesha. Matokeo yake ni kamba ambayo ingetoa asili ikiwa Python ingeitathmini. Hii ndiyo sababu mapengo yanaongezeka mara mbili kwenye mstari wa mwisho. Haziko kwenye kamba, lakini ni muhimu ili ikiwa Python ingezitathmini, kila \\ itakuwa moja ya \ kama matokeo.


Marafiki!
Tuko katikati ya usafishaji mkubwa!
Hitilafu zinazowezekana na mkunjo wa kurasa
Haiwezekani kuona kila kitu haraka!
Ikiwa unapata hitilafu yoyote, basi ikiwa si vigumu kwako, andika anwani ...
Uko hapa sasa:

http://site/page/php/039_php_kavyichki.html

Nukuu za Php, nukuu moja, nukuu mbili, kutoroka

Leo tutashughulika na quotes, lakini si rahisi, lakini quotes katika PHP na pamoja na kutoroka quotes, chaguzi.

Wacha tuanze na ukweli kwamba PHP inaruhusu matumizi ya nukuu mbili na moja.

Na kuna chaguzi kadhaa za kutoroka nukuu.

Nukuu ziko wapi kwenye kibodi?

Ikiwa utafanya kazi kwa nambari, basi unahitaji kujua ni wapi nukuu ziko kwenye kibodi katika mpangilio wa Kilatini - hii ni

herufi E - herufi ndogo:

na herufi e imeandikwa - hizi ni nukuu moja:

php alama ya nukuu mara mbili na moja

Kwa kawaida, utahitaji tabia ya quote, i.e. Ikiwa unahitaji kuchapisha nukuu bila kuwasha moto, ndivyo wahusika wa nukuu wanavyotumika.

Tabia ya nukuu mara mbili:

"

Tabia ya nukuu moja:

"

Nukuu za kutoroka za Php.

Unamaanisha nini kwa kutoroka nukuu katika PHP.

Hebu tuangalie mfano, kwa sababu kwa mifano daima ni rahisi kuelewa kile tunachozungumzia!

Wacha tuandike nambari ya php:

echo "nukuu za php";

Lakini ikiwa tutabandika msimbo huu hapa, basi ninaogopa kuwa hautawahi kuona mistari hii!?

Kwa nini? Ndio, kwa sababu tu nambari haitafanya kazi.

Nilikutengenezea hasa, na msimbo huu umeingizwa ndani yake, na ikiwa unataka, unaweza kuona nini kitatokea!

Kwa nini hili lilitokea?

Kwa sababu ndani ya echo kuna nukuu za ziada, ambazo hugunduliwa kama nambari ya PHP, na ikiwa kuna zaidi yao kuliko inavyotarajiwa, basi hitilafu hutokea!

Nini cha kufanya katika kesi hii!

Unahitaji kubadilisha nukuu mara mbili na nukuu moja.

Hebu tuchukue msimbo sawa na tubadilishe manukuu maradufu kuwa nukuu moja.

echo ''nukuu za php"';

Wacha tuone kile tulichonacho!

Wale. Tulichukua nambari ya juu na kuibandika moja kwa moja kwenye ukurasa huu na hii ndio matokeo:


2.

Chaguo la pili la kutoroka nukuu.

Kuna hali wakati kutumia quotes moja haiwezekani!

Kwa kesi hii, slash ya kushoto hutumiwa. Kabla ya kila kipengele kinachohitaji kutoroka unahitaji kuweka kufyeka vile.

Wacha tuchukue ingizo la hapo awali na tufanye vivyo hivyo, kwa kutumia kufyeka tu:

mwangwi" nukuu za php";

Wacha tuone matokeo:

Jinsi ya kuondoa quotes.

Ili kuonyesha quotes kwenye skrini, na ili wasiwe msimbo wa PHP - bila kujali jinsi ya ajabu inaweza kuonekana! Nukuu zinahitaji kubadilishwa kuwa huluki za html, kwa mfano:

Nukuu moja kupitia nambari ya html ::

"- nukuu moja"""

Nukuu mara mbili kupitia nambari ya html:

"- nukuu mbili"""

Nukuu kama hiyo itaonekana kama nukuu kwenye skrini, lakini haitaonekana tena kwenye nambari ya Php...

Na zaidi!

Nambari zote za PHP lazima zishughulikiwe kwa uangalifu! Ikiwa, kwa mfano, uliandika kitu katika Neno, maandishi fulani, basi ulianza kuandika msimbo ndani yake, kama ilivyotokea kwangu mara ya kwanza.

Na sikuweza kuelewa shida ilikuwa nini - hakutaka kunionyesha nambari rahisi. Nilikuwa tayari kuvunja kompyuta na nyundo !!!

Lakini ikawa kwamba nukuu katika mhariri wa kanuni ni tofauti na Neno. Na haiwezekani kuelewa ikiwa haujapitia!

2007.11.08 16:07

Nilipata shida ya kuongeza nukuu kiotomatiki katika PHP wakati wa kuingiza habari kwenye hifadhidata.

Baada ya kuchimba kidogo kwenye Mtandao, niligundua kuwa tatizo linaweza kutatuliwa kwa kubadilisha mipangilio ya seva kwa kutumia maagizo katika .htaccess: magic_quotes_gpc na magic_quotes_runtime.

Wanasema (na hata ninaamini) kwamba watengenezaji wa lugha ya PHP, kwa kuwa hawakuweza kulazimisha wingi wa waandaaji wa programu za PHP kuandika nambari za hali ya juu, waliamua kutunza usalama wa DBMS yetu na kuanzisha nyongeza ya kiotomatiki ya kufyeka. kabla ya wahusika maalum. Mikwaju huongezwa kulingana na maagizo ya php.ini (magic_quotes_gpc na magic_quotes_runtime).

Maagizo kwa pamoja yanaitwa "nukuu za uchawi", lakini ninaziita "nukuu za kuzimu". Hakika, katika programu iliyoandikwa vizuri hakuna haja ya nukuu moja kwa moja; zaidi ya hayo, nukuu za ziada huingia njiani na lazima ziondolewe.

Maagizo ya kwanza - magic_quotes_gpc - inamaanisha kuwa PHP huongeza kiotomatiki mikwaju kwa data inayotoka kwa mtumiaji - kutoka kwa POST, maombi ya GET na vidakuzi. Tofauti ya pili - magic_quotes_runtime - inamaanisha kuwa mikwaju huongezwa kwa data iliyopokelewa wakati wa utekelezaji wa hati - kwa mfano, kutoka kwa faili au hifadhidata. Kwa hivyo, kazi zingine zinazowasilisha habari kama hizo hufanya alama za nukuu.

Ikiwa unataka kukataa huduma hiyo ya kuingilia, basi ama wewe (katika hali hiyo ya nadra na yenye furaha wakati wewe ni mmiliki kamili wa seva) zima vigezo hivi vya usanidi kwenye faili ya php.ini, au (isipokuwa, bila shaka, wewe ni kukaribisha tovuti kwenye upangishaji bure) unaweza kufanya mabadiliko kwenye faili ya .htaccess. Hii ni faili ambayo ina ndani - kwa saraka moja, na sio kwa seva nzima - mipangilio ya apache. Na ongeza mistari ifuatayo kwake.

(PHP 4, PHP 5, PHP 7)

nyongeza - Kamba ya kunukuu yenye mikwaruzo katika mtindo wa C

Maelezo

nyongeza (kamba $str , kamba $charlist): kamba

Hurejesha mfuatano wenye mikwaju ya nyuma kabla ya herufi ambazo zimeorodheshwa katika kigezo cha charlist.

Vigezo

Kamba ya kutoroka.

Charlist

Orodha ya wahusika kutoroka. Ikiwa charlist ina wahusika \n, \r n.k., hubadilishwa katika mtindo unaofanana na C, huku herufi nyingine zisizo na nambari na misimbo ya ASCII chini ya 32 na zaidi ya 126 zikibadilishwa kuwa uwakilishi wa oktali.

Unapofafanua mfuatano wa wahusika katika hoja ya charlist hakikisha kuwa unajua ni wahusika gani wanaokuja kati ya wahusika unaowaweka kama mwanzo na mwisho wa safu.

echo addcslashs ("foo" , "A..z" );
// pato: \f\o\o\[ \]
// Herufi zote za juu na ndogo zitaepukwa
// ... lakini ndivyo itakavyokuwa [\]^_`
?>

Pia, ikiwa herufi ya kwanza katika safu ina thamani ya juu ya ASCII kuliko herufi ya pili katika masafa, hakuna masafa yatakayoundwa. Wahusika wa mwanzo, mwisho na wa kipindi pekee ndio wataepuka. Tumia amri() kazi kupata thamani ya ASCII kwa mhusika.

echo addcslashes ("zoo["."]" , "z..A" );
// pato: \zoo["\."]
?>

Kuwa mwangalifu ukichagua kuepuka herufi 0, a, b, f, n, r, t na v. Zitageuzwa kuwa \0, \a, \b, \f, \n, \r, \t na \v, ambazo zote zimefafanuliwa mapema mfuatano wa kutoroka katika C. Nyingi ya mifuatano hii pia imefafanuliwa katika C- nyinginezo - lugha zinazotokana, pamoja na PHP, ikimaanisha kuwa huwezi kupata matokeo unayotaka ikiwa utatumia matokeo ya nyongeza () kutengeneza msimbo katika lugha hizo na herufi hizi zilizofafanuliwa katika charlist .