» »

[php] brisanje nedovoljenih znakov

[php] brisanje nedovoljenih znakov

Veron ::

Torej imam recimo takole: ime slike je "bla 19.2.2011 wuhu - bla neki.jpg"

rad bi pa imel v končni fazi nekako takole: "bla-19-2-2011-wuhu-bla-neki.jpg"
z ostalimi znaki ni problemov, edino nevem kako se "lepo" znebit tistih pik med datumom ali bilo kje drugje v nizu s tem, da ne odstranim zadnje pike ".jpg"

trenutno za ostale znake uporabljam kar:
$y = ereg_replace("[^A-Za-z0-9. ]", "", $x);
$y = preg_replace("/(\s){2,}/",'$1',$y);
$y = ereg_replace("[ ]", "-", $y); 

s tem, da se tudi znebim dvojnih presledkov in morebitnega podvajanja "-" med wuhu in bla

sicer nevem a je tole glih kaka dobra ideja, verjetno obstaja še kakšna. Uglavnem malo pomoči bi rabil še, kako se znebit pik v stringu, s tem da ne uničim zadnje pred končnico?

Poldi112 ::

Kaj pa če na koncu -jpg zamenjaš nazaj v .jpg? Glede dvojnih presledkov, lahko pač vse spremeniš v '-', nato pa zamenjaš vse '--' z '-'. Ali pa preveriš, če za to obstajajo kakšne še spisane funkcije.
Where all think alike, no one thinks very much.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.

krho ::

BTW: ereg je deprecated.. uporabi preg..
Če bi programiral z vklopljenimi napakami in error_reporting = E_ALL | E_STRICT bi to vedel

P.S. deprecated je v 5.3
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

Zgodovina sprememb…

  • spremenil: krho ()

Veron ::

hvala za opozorilo, sm sicer malo googlal in našel obstoječe funkcije za kreiranje SEO linkov
	$string = trim($string);
	if(ctype_digit($string)) {
		return $string;
	} else {      
		// replace accented chars
		$accents = '/&([A-Za-z]{1,2})(grave|acute|circ|cedil|uml|lig);/';
		$string_encoded = htmlentities($string,ENT_NOQUOTES,'UTF-8');		
		$string = preg_replace($accents,'$1',$string_encoded);
		// clean out the rest
		$replace = array('([\40])','([^a-zA-Z0-9-.])','(-{2,})');
		$with = array('-','','-');
		$string = preg_replace($replace,$with,$string); 
	}
	return strtolower($string);


edino kar me moti je, tale pika :-/, nebi je imel, vendar je problem, ker isto funkcijo uporabljam še za popravljanje imen fajlov, ki se nalagajo, kje pač mora biti pika zadaj pred končnico, edino, če bi odrezal končnico prvo fajlu, nato ime dal čez SEO funkcijo in na konc nazaj samo prilepil končnico?

McAjvar ::

Poskusi s temle
$string = preg_replace('/(?(?=([\.])[^\.]*\1)\.|-)/', '-', $string);


Ce nisem kje zajebal, bi tole skoraj moralo delat - zamenja vse pike, razen zadnje, z vezaji.

Edit: Popravil podcrtaj v vezaj v replacement stringu.
"[...] the advance of civilization is nothing
but an exercise in the limiting of privacy."
- Isaac Asimov

Zgodovina sprememb…

  • spremenil: McAjvar ()

Veron ::

hvala, to je to zdej :-)

ps: verjetno obstaja kje dokumentacija vseh teh "znakov" (pravil). imaš mogoče link, ker sam ne najdem?

Zgodovina sprememb…

  • spremenil: Veron ()

RockyS ::

http://php.net/manual/en/

Ni da ni. Ena izmed najboljših dokumentacij.

keworkian ::

Veron je izjavil:

hvala, to je to zdej :-)

ps: verjetno obstaja kje dokumentacija vseh teh "znakov" (pravil). imaš mogoče link, ker sam ne najdem?


http://www.regular-expressions.info/tut...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Javascript DOM based XSS vulnerability

Oddelek: Programiranje
152450 (1872) MrStein
»

PHP - stringi

Oddelek: Izdelava spletišč
251639 (1462) pehape
»

[php]$_POST iz šumnikov v nešumnike

Oddelek: Izdelava spletišč
71474 (1386) Gost
»

Regularni izrazi....

Oddelek: Programiranje
352270 (1659) BigWhale
»

[php]: preprost problem in preg_replace()

Oddelek: Izdelava spletišč
61075 (1013) R33D3M33R

Več podobnih tem