Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
A fost adoptata legea privind alc...

La multi ani Costi

Vreau sa ofer imprumut pentru con...

Usa de garaj la o magazie existenta
 The worst of evil (2023)

Proiect de lege: Romanii vor achi...

Dopuri / casti amortizare zgomot ...

Ce componente trebuie sa schimb d...
 2 job-uri de 8 ore simultan.

VW e-Up second hand sau alternati...

Reparatie scara mozaic vechi

Cablu curte destinat deplasarii l...
 Sfat de cumparare pentru un Jagua...

La mulți ani @mishu_bz!

La mulți ani @kyrre!

PF vinde 3 autoturisme ce se inti...
 

htacces rescriere cu litere mici si excludere caractere speciale

- - - - -
  • Please log in to reply
23 replies to this topic

#1
Evollution

Evollution

    Junior Member

  • Grup: Members
  • Posts: 146
  • Înscris: 20.08.2009
deci am putin ajutor

http://www.fifago.co.....0FIFA 11.html

sau
fifago.com/news/13-Detalii%20despre%20versiunea%20demo%20de%20FIFA%2011.html
( structura url news/id-title.html [la moment]
ma puteti ajuta sa fac sa dispara automat literele mari din url si in loc de spatiu sa nu apara %20 dar -

am gasit pe un forum ceva de genu :

// permalink generator
function generatePermalink($string){
$string = strtolower($string);
$string = str_replace('ă','a',$string);
$string = str_replace('â','a',$string);
$string = str_replace('î','i',$string);
$string = str_replace('ș','s',$string);
$string = str_replace('ț','t',$string);
$string = str_replace(' ','-',$string);
$string = preg_replace('/[^a-zA-Z0-9-]{1}/','',$string);
$string = preg_replace('/[-]{2,}/','-',$string);
return $string;
}
http://forum.seopedi...e-speciale.html
insa nam inteles cum se  foloseste ce si unde anume ca nu a explicat mai pe lung (ps sunt incepator in seo php ...)
sau daca se poate de facut cumva prin htacces scrieti pls metoda mai jos

Edited by Evollution, 13 September 2010 - 14:39.


#2
cezarica

cezarica

    Member

  • Grup: Members
  • Posts: 803
  • Înscris: 15.02.2004
În loc de:
$string = str_replace('ă','a',$string);
$string = str_replace('â','a',$string);
$string = str_replace('î','i',$string);
$string = str_replace('ș','s',$string);
$string = str_replace('ț','t',$string);
$string = str_replace(' ','-',$string);
rezolvi mai repede cu:
$a = array('ă', 'â', 'î', 'ș', 'ț', ' ');
$b = array('a', 'a', 'i', 's', 't', '-');
$string = str_replace($a, $b, $string);
Defapt, tu ce vrei să obții? să faci din 'Un articol demn de citit' în 'un-articol-demn-de-citit' ?

Edited by cezarica, 13 September 2010 - 19:24.


#3
Danbog_1920

Danbog_1920

    Active Member

  • Grup: Banned
  • Posts: 1,910
  • Înscris: 24.10.2008
$url=str_replace(" ", "-", $url");
  - inlocuiesti spatiile goale cu - . De asemenea, inlocuieste toate caracterele nepermise din URL tot cu - sau cu nimic ("").
Acum depinde. Poti avea si diacritice in URL ;) . Citeste despre Url encoding. Ciao ! ;)

#4
Evollution

Evollution

    Junior Member

  • Grup: Members
  • Posts: 146
  • Înscris: 20.08.2009
Deci asa eu am mai multe probleme cu urlurile de exemplu
http://www.fifago.co.....vestiar .html

1. probleme cu caracterele romane si 2-i nam inteles unde anume sa folosesc

$a = array('ă', 'â', 'î', 'ș', 'ț', ' ');
$b = array('a', 'a', 'i', 's', 't', '-');
$string = str_replace($a, $b, $string);

sau

$url=str_replace(" ", "-", $url");

?!  

de exemplu sursa la link la mine este urmatoarea :

<a href='http://www.fifago.com/news/$id-$title.html' title='$title'>$title </a>

deci daca stirea ar avea titlu Ghid Htacces sar primi ceva de genul

http://www.fifago.com/news/1-Ghid Htacces.html


prin alte cuvinte nam inteles unde si ce sa folosesc din codurile de mai sus :\


Va rog scrieti un mesaj unde sa spuneti pe pasi ce sa fac , ca nu am inteles cum sa folosesc codurile de mai sus , sau unde trebuie ele insertate ca sa lucreze

Edited by Evollution, 13 September 2010 - 22:14.


#5
cezarica

cezarica

    Member

  • Grup: Members
  • Posts: 803
  • Înscris: 15.02.2004
Cum mă gândeam, vrei să faci url-uri scurte (aka. search engine friendly url's). Metoda aleasă de tine din păcate are marele dezavantaj prin faptul că dacă ai (și o să ai, e o chestiune de timp) două articole au același titlu atunci ele vor avea automat și acelasi url, așa că îți trebuie o altă metodă, una din următoarele:

1. id_unic_articol/titlu-articol
2. an/titlu-articol
3. categorie/titlu-articol (dar si asta ajunge la aceiasi problema descrisa mai sus)
4. an/luna/titlu-articol
5. alta care îți mai vine ție în minte, dar să nu aibă aceiași problemă pe termen lung cu 2 articole cu același nume

cu:
function shortURL($title) {
	return trim(preg_replace('{ +}','-',preg_replace('/[^a-zA-Z0-9\s]/','',strtolower($title))));
}
$titlu = shortURL($titlu);
faci de exemplu din 'Un titlu de articol' în 'un-titlu-de-articol'. Dacă mai vrei să scoți și caracterele românești din titlu, implicit din URL-ul rezultat, atunci codul de mai sus devine:
function shortURL($title) {
	$a = array('ă', 'â', 'î', 'ș', 'ț');
	$b = array('a', 'a', 'i', 's', 't');
	$title= str_replace($a, $b, $title);
	return trim(preg_replace('{ +}','-',preg_replace('/[^a-zA-Z0-9\s]/','',strtolower($title))));
}
$titlu = shortURL($titlu);

Edit: Ca să evit orice fel de confuzii, ce e mai sus este cod PHP. :)

Edited by cezarica, 13 September 2010 - 22:51.


#6
Danbog_1920

Danbog_1920

    Active Member

  • Grup: Banned
  • Posts: 1,910
  • Înscris: 24.10.2008
Pai... cu str_replace inlocuiesti parti din string. Deeci... noi vom inlocui spatiile goale, care ar fi fost trasnformate ulterior in  %20  cu  -
Ai inteles acum ? Nu arata mai bine:

site.com/titlu-articol.html
decat
site.com/titlu%20articol.html  

???

#7
Evollution

Evollution

    Junior Member

  • Grup: Members
  • Posts: 146
  • Înscris: 20.08.2009
bogdan eu am inteles doar ca nu stiu unde sa folosesc acest cod pentru ca sa lucreze adica in head body ..  daca ma intelgi :)

Edited by Evollution, 14 September 2010 - 11:02.


#8
Evollution

Evollution

    Junior Member

  • Grup: Members
  • Posts: 146
  • Înscris: 20.08.2009
ps nam citit mesajul lui cezarica acus incerc sa vad daca va merge , mersi

#9
Evollution

Evollution

    Junior Member

  • Grup: Members
  • Posts: 146
  • Înscris: 20.08.2009
$output=mysql_query("SELECT id,title,staff,news,img,DATE_FORMAT(date,'%M %d, %Y at %l:%i %p') FROM news ORDER BY id DESC LIMIT $offset, $rowsPerPage");
$num=$rowsPerPage;
			if($num>0){
			if($num>4)$num=4;
			$place=0;
while(list($id,$title,$staffm,$news,$img,$date)=mysql_fetch_row($output)){
$totalc=mysql_query("SELECT COUNT(*) FROM comments WHERE cgroup='1' AND comted='$id'");

$totalc=mysql_fetch_array($totalc);
$totalc="$totalc[0]";
if (strlen($news) > $config[newslength]){
  $news = substr($news,0,$config[newslength]);
  $news .= "...[<a href='./index.php?action=article&art=$id'>Read More</a>]"; }
if($config[cellbgx]==$config[cellbg]){$config[cellbgx]="$config[cellbg2]";}else{$config[cellbgx]="$config[cellbg]";}
$out[news1].="
$titlu
<div id='news_title_$place' class='news_title' onmouseover=\"viewNews('$place');\"> <div class='subtitle' >$title</div> <div class='posted_l' >Posted at 00:00 2010/05/03 by MC</div> <div id='big_img' > <img src='$img' alt='$title' style='width: 127px; height: 77px;' /> </div> <div id='text'>$news</div> <div class='read_more_l'><a href='http://www.fifago.com/news/$id-$title.html' title='$title'>Read more about this news ? </a></div> </div> <div class='clear'></div> <div id='news_title_little_$place' class='news_title_little' onmouseover=\"viewNews('$place');\"> <div id='small_img' > <img src='$img' alt='titlu stire' style='width: 53px; height: 33px;' /></div> <div style='float:left;'> <div id='small_subtitle' >$title</div> <div id='small_infos'> <div id='posted'>Posted at 00:00 2010/05/03 by MC</div> <div class='read_more'><a href='http://www.fifago.com/news/$id-$title.html' title='$title'>Read more about this news ? </a></div> </div> </div> </div> 

<div style='clear:both;border-bottom:2px solid #999;'></div> 

		 
"; 


$place++;


} 
	
			}

unde sa pun functia de mai sus ca am puso si mai sus si mai jos si variabila titlu nu apare :(

#10
Evollution

Evollution

    Junior Member

  • Grup: Members
  • Posts: 146
  • Înscris: 20.08.2009
p.s asa eroare imi apare
Fatal error: Cannot redeclare shorturl() (previously declared in news.php:45) in news.php on line 45

o mersi mult a mers :)

codul final folosit a fost :

$url=strtolower($title);
$a = array('ă', 'â', 'î', 'ș', 'ț', ' ');
$b = array('a', 'a', 'i', 's', 't', '-');
$titlu= str_replace($a, $b, $url);

insa nu am inteles ceva :

  return trim(preg_replace('{ +}','-',preg_replace('/[^a-zA-Z0-9\s]/'
la ce ajuta asta ? si ce trebuie sa adaug la codul de mai sus pentru ca sa fie avaible si la mine

#11
cezarica

cezarica

    Member

  • Grup: Members
  • Posts: 803
  • Înscris: 15.02.2004
Înlocuiește str_replace cu str_ireplace să nu mai fie case-sensitive și nu mai e nevoie de strtolower. Tare am impresia că ai pus codul cu funcția shortur() într-o buclă, de unde și eroarea.

Buicla într-o altă buclă nu e bine, mai ales că ai un query care se repetă acolo, care se poate uni intr-un singur query cu un LEFT.

Edited by cezarica, 14 September 2010 - 18:41.


#12
Evollution

Evollution

    Junior Member

  • Grup: Members
  • Posts: 146
  • Înscris: 20.08.2009
acum daca ma mai puteti ajuta cu ceva ar fi minunat

in database tagul title si news sund codate in utf8_general_ci

acum daca scriu stirea cu caractere romane apar diferite Stoichiță: "Nu poți r�de de Steaua sau de Barcelona .. daca observati in loc de î se pune � nu stiu de ce :(

ps ata daor la titlu insa continutul  am pus un editor provesional si el singur modifica  î-urile in ceva de genul : &icirc (ns daca e bine pt seo insa cel putin le modifica si apar normal pe prima pagina)

nu sititi cum sa rezolv problema ?

a si cum scap de " din url ca acum am incercat de proba si au aparut si ele in url

#13
cezarica

cezarica

    Member

  • Grup: Members
  • Posts: 803
  • Înscris: 15.02.2004
Dacă 'comted' din tabela comments este ID-ul unic acordat automat fiecărui comentariu, atunci ți-am făcut eu join-ul la cele 2 tabele (news și comments), dacă nu este modifică tu unde îl vezi menționat.
$query = mysql_query("SELECT n.id AS id, n.title AS title, n.staff AS staff, n.news AS news, n.img AS img, DATE_FORMAT(n.date,'%M %d, %Y at %l:%i %p') as date, SUM(IF(c.cgroup = "1", 1,0)) as comments FROM news n INNER JOIN comments c ON n.id = c.comted ORDER BY n.id DESC LIMIT $offset, $rowsPerPage") or die('Error: ' . mysql_error());
while ($row = mysql_fetch_assoc($query)) {
print_r($row);
}
dar nu l-am testat că nu am la ce. :) Te rog să îl încerci și să îmi spui dacă zice ceva.

Încerc acuma să îmbunătățesc funcția shortURL(). Revin cu răspuns.

Edit: Mersi de tip-ul cu while(list()). :)

2nd edit: Nu sunt prea sigur de partea cu SUM. Să mă mai documentez.

3rd edit: Cred (repet, cred, nu sunt 100% sigur) că ar trebui înlocuit SUM(IF(c.cgroup = "1", 1,0)) cu COUNT(c.comted) și adăugat la urmă un HAVING c.cgroup ='1', adică:
$query = mysql_query("SELECT n.id AS id, n.title AS title, n.staff AS staff, n.news AS news, n.img AS img, DATE_FORMAT(n.date,'%M %d, %Y at %l:%i %p') as date, COUNT(c.comted) as comments FROM news n INNER JOIN comments c ON n.id = c.comted ORDER BY n.id DESC LIMIT $offset, $rowsPerPage HAVING c.cgroup ='1'") or die('Error: ' . mysql_error());

4th edit: Am uitat un c. din fața comted. Am modificat mai sus.

Edited by cezarica, 14 September 2010 - 19:35.


#14
Evollution

Evollution

    Junior Member

  • Grup: Members
  • Posts: 146
  • Înscris: 20.08.2009

 cezarica, on 14th September 2010, 20:16, said:

Dacă 'comted' din tabela comments este ID-ul unic acordat automat fiecărui comentariu, atunci ți-am făcut eu join-ul la cele 2 tabele (news și comments), dacă nu este modifică tu unde îl vezi menționat.
$query = mysql_query("SELECT n.id AS id, n.title AS title, n.staff AS staff, n.news AS news, n.img AS img, DATE_FORMAT(n.date,'%M %d, %Y at %l:%i %p') as date, SUM(IF(c.cgroup = "1", 1,0)) as comments FROM news n INNER JOIN comments c ON n.id = c.comted ORDER BY n.id DESC LIMIT $offset, $rowsPerPage") or die('Error: ' . mysql_error());
while ($row = mysql_fetch_assoc($query)) {
print_r($row);
}
dar nu l-am testat că nu am la ce. :) Te rog să îl încerci și să îmi spui dacă zice ceva.

Încerc acuma să îmbunătățesc funcția shortURL(). Revin cu răspuns.

Edit: Mersi de tip-ul cu while(list()). :)

2nd edit: Nu sunt prea sigur de partea cu SUM. Să mă mai documentez.

k o              sa incerc acum  se pare ca serverul nu lucreaza nu inteleg motivul

#15
cezarica

cezarica

    Member

  • Grup: Members
  • Posts: 803
  • Înscris: 15.02.2004
Ce nu lucrează? Dă mai multe detalii dacă îți dă vreo eroare ceva. :rolleyes:

Cred că se pot uni cele 2 preg_replace în unul singur, dar încă nu mi-a ieșit pasența.
return preg_replace('{ +}','-',preg_replace('/[^a-zA-Z0-9\s]/','',strtolower($title)));
O iau de la coadă să fie mai lesne de înțeles:
strtolower() - transformă tot titlul din caractere mari în caractere mici
preg_replace() - înlocuiește toate caracterele care nu sunt cuprinse în plaja a-z, A-Z și 0-9 într-un spatiu
preg_replace() - înlocuieșe toate spațiile cu '-'

Funcția astfel devine:
function shortURL($title) {
	$a = array('a', 'â', 'î', 's', 't'); $b = array('a', 'a', 'i', 's', 't');
	$title= str_ireplace($a, $b, $title);
	return preg_replace('{ +}','-',preg_replace('/[^a-zA-Z0-9\s]/','',strtolower($title)));
}
astfel că, de exemplu: 'Nu poți râde de Steaua sau de Barcelona!!!' devine 'nu-poti-rade-de-steaua-sau-de-barcelona'

Edited by cezarica, 14 September 2010 - 19:59.


#16
Evollution

Evollution

    Junior Member

  • Grup: Members
  • Posts: 146
  • Înscris: 20.08.2009
deci am incercat sa pun exact funtia care miai dat acum si :

Fatal error: Cannot redeclare shorturl() (previously declared in /blocks/block-sitenews.php:46) in /blocks/block-sitenews.php on line 46 ..

am dat rename la function in shorturl2 si tot aceiasi problema Fatal error: Cannot redeclare shorturl2() (previously declared in ...

daca pun deasupra la output funtia atunci nu apare problema doar ca nu lucreaza functia :(
function shortURL($title) {
	$a = array('ă', 'â', 'î', 'ș', 'ț');
	$b = array('a', 'a', 'i', 's', 't');
	$title= str_replace($a, $b, $title);
	return trim(preg_replace('{ +}','-',preg_replace('/[^a-zA-Z0-9\s]/','',strtolower($title))));
}
$titlu2 = shortURL($title);


$output=mysql_query("SELECT id,title,staff,descriere,img,DATE_FORMAT(date,'%M %d, %Y at %l:%i %p') FROM news ORDER BY id DESC LIMIT $offset, $rowsPerPage");...


insa daca o pun invers

$output=mysql_query("SELECT id,title,staff,descriere,img,DATE_FORMAT(date,'%M %d, %Y at %l:%i %p') FROM news ORDER BY id DESC LIMIT $offset, $rowsPerPage");
function shortURL($title) {
	$a = array('ă', 'â', 'î', 'ș', 'ț');
	$b = array('a', 'a', 'i', 's', 't');
	$title= str_replace($a, $b, $title);
	return trim(preg_replace('{ +}','-',preg_replace('/[^a-zA-Z0-9\s]/','',strtolower($title))));
}
$titlu2 = shortURL($title);

apare eroare cu cannot declarate :(

$url=strtolower($title);
$a = array('ă', 'â', 'î', 'ș', 'ț', 'ț',' ');
$b = array('a', 'a', 'i', 's', 't', 't','-');
$titlu= str_replace($a, $b, $url);

dar oare aici nu se poate de introdus cumva ,preg_replace('/[^a-zA-Z0-9\s]/ .. ca daca nu fac sub forma de functie vadca nu face probleme

#17
cezarica

cezarica

    Member

  • Grup: Members
  • Posts: 803
  • Înscris: 15.02.2004
Băi nene, pune /* înaintea și */ după codul tău și lasă doar ce am zis eu mai sus (de la $query până se termină while-ul cu' }'), înafară de shortURL(), că ajungem și acolo. Am reușit ceea ce mi-am prosus, am scurtat și funcția shortURL(). :D Ia să mai incerc cate ceva.

#18
Evollution

Evollution

    Junior Member

  • Grup: Members
  • Posts: 146
  • Înscris: 20.08.2009

 cezarica, on 14th September 2010, 21:30, said:

Băi nene, pune /* înaintea și */ după codul tău și lasă doar ce am zis eu mai sus (de la $query până se termină while-ul cu' }'), înafară de shortURL(), că ajungem și acolo. Am reușit ceea ce mi-am prosus, am scurtat și funcția shortURL(). :D Ia să mai incerc cate ceva.


Parse error: syntax error, unexpected T_LNUMBER in /blocks/block-sitenews.php on line 44 asta daca pun codul tau

Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate