Jump to content
php.lv forumi

unicode un str_replace


jam

Recommended Posts

Ir forma, kurā artikula laiks jāaizsarga no mīkstiem un gariem burtiem.

PHP tas izskatās šādi:

 

$bad = array("ā", "ē", "ī", "ū", "ž", "č", "ņ", "š", "ķ", "ļ");

$artikuls =str_replace($bad,'',strtolower($_POST['artikuls']));

 

 

Mē'ģinu, mēģinu un nesanāk. Tad echoju to $artikuls pirms insertošanas DB un parādījās ņekiji simboli: 䁤?冠 mīkstināto burtu vietā. Tipa ķeburi.

 

Kāpēc tā? PhP failā encodings arī uzlikts UTF-8, viss pārējais strādā nevainojami, bet šs replace gan nē.

Link to comment
Share on other sites

Pārbaudi tikai uz atļautajiem simboliem:

$artikuls =preg_replace('@[^a-zA-Z0-9: \-+]@', '', $_POST['artikuls']);

20493[/snapback]

 

a ja vēl arī visus speisus vajag nafigurēt? Tie regexpi kā tumša bilde.

Link to comment
Share on other sites

Tad izvāc to atstarpi starp kvadrātiekavām. Jeb paski visus atļautos simbolus, tad uzrakstīs tev regexpu.

20503[/snapback]

 

AA, skaic. Man vajag tikai tādus simbolus, kurus var izmantot urlii. latinu burti, "_" un "-" Vairak neko citu.

Link to comment
Share on other sites

Tāpēc ka urī drīkst atrasties arī citi simboli, ne tikai latīņu burti un - _.

 

Ja vajag tikai latīņu burtus un _ un - tad:

$artikuls =preg_replace('@[^\w\-_]@i', '', $_POST['artikuls']);

20515[/snapback]

 

 

Vecāki browseri tādu fīču nesaprot, paldies.

Link to comment
Share on other sites

Ko nesaprot? Citus simbolus? Nu gan tu stāsti! + zīmi noteikti saprot (tā ir astarpes vietā) % zīmi arī, lai nokodētu hexā nerādāmus simbolus, un # zīme arī drīkst būt (anchors). Ja precīzi gribi zināt, kas drīkst būt, tad lasi šeit:

http://www.faqs.org/rfcs/rfc1738.html (5-tajā sadāļā parādīts no kā var konstruēt urļus)

Link to comment
Share on other sites

×
×
  • Create New...