Vă rugăm să ajute pentru a rezolva.
Primul tip de șir gol ca poate fi rezultatul var_dum = string (3) „“.
Alte explicație Unicode I znayu.Pohodu aceste (UTF-8) și invizibile sunt caractere.
Cea mai simplă opțiune
Dar cât de bine face acest lucru nu sunt sigur
Dacă acesta este cazul, este necesar să se considere că acest lucru poate fi un spațiu sub o codificare diferită este diferit și cum să curețe un șir de caractere de la ea?
7-bit ASCII?
Dacă ai fi fost dintr-o dată în 1963, și doar doresc să utilizeze imprimabil caractere ASCII pe 7 biți, aveți nevoie doar pentru a elimina toate caracterele din intervalul 0-31 și a codurilor 127-255:
8-bit ASCII extins?
În 1963, nu-i plăcea, și ați mutat în anii optzeci și se confruntă cu ASCII de 8 biți, în care personajele sunt obișnuite 128-255, afișate simboluri. Apoi, trebuie doar să se adapteze ușor șirul de înlocuire și de a șterge caractere 0-31 și 127:
Bine ați venit în secolul 21! Dacă șirul este un șir de UTF-8, atunci va trebui să utilizați modificator \ u:
Pur și simplu eliminați simbolurile 0-31 și 127. Acest design ar lucra atât, cât și pentru ASCII de 8 biți UTF-8, din moment ce al doilea este un subset al primului, și ambele au același interval de caractere de control. Sincer, o astfel de proiectare va funcționa fără / u. dar va face viața mai ușoară în cazul în care va trebui să ștergeți și ce sau alte simboluri.
Dacă se face în Unicode, rezultă că există atât de multe caractere non-imprimare. dar să ne ia în considerare cel mai des utilizabilă ,: NO-BREAK SPACE (U + 00A0)
În conformitate UTF-8, poate fi reprezentat ca 0xC2A0. Prin urmare, va trebui să caute și să ștergeți secvența de caractere, dar dacă utilizați modificatorul / u. puteți specifica pur și simplu \ xA0:
Bonus: Ce se întâmplă dacă str_replace?
preg_replace extrem de eficient, dar dacă aveți nevoie pentru a procesa o cantitate mare de text, este mai productiv să utilizeze str_replace indicând gama sa de caractere:
Intuitiv, se pare că această abordare va funcționa mult mai rapid, dar hai teste. Crearea unui set de linii de testare de diferite lungimi și conținuturi și pentru a verifica viteza (utilizat PHP 7.0.12):
Măsurătorile au fost efectuate pentru 10.000 de iterații. Este foarte interesant să se uite la diferențele relative. Pentru siruri de până la 512 de caractere cu o marjă considerabilă de victorii preg_replace. Diferența dintre 1-8kb nivelat.
Un rezultat interesant, nu-i așa? Dar, în orice caz, nu ar trebui să se bazeze numai pe testele mele, ca pe datele specifice pot fi toate exact opusul.