Hallo, GastEinloggen • Registrieren ] 5 Gäste und 0 User online.  
Navigation

Technische News
21:44, 10.05.2010:
Update: phpMyAdmin 3.3.3
22:19, 15.04.2010:
Update: phpMyAdmin 3.3.2
10:52, 08.03.2010:
Update: phpMyAdmin 3.3.0
20:38, 02.12.2009:
Update: phpMyAdmin 3.2.4
22:12, 30.10.2009:
Update: phpMyAdmin 3.2.3

Statistiken
Threads: 2019
Posts: 26369
Benutzer: 489
Davon aktiv: 55
Besucher heute: 31
Besucher Monat: 31
Meiste User auf einmal on:
52 am 12.03.2010, 02:24

Thread anschauen :: Wordpress URL-Funktion

David
Freak
Geschrieben am 11.02.2010 um 11:51 Uhr.
1 mal geändert. Zuletzt am 11.02.2010 um 11:52 von David.
Avatar von David

Status: offline
Registriert: 18.05.2008
Beiträge: 442
Bits: 8 681,75
Geschlecht: männlich


Moin iBitliver!

Im Moment bin ich dabei mit nem Kollegen en großes Projekt aufzubauen, im Moment bin ich am ACP, und ich würd gern URLs wie bei Wordpress aus dem Titel des Artikels erezeugen lassen, also wenn man bei Wordpress nen neuen Artikel schreibt und den Titel eingibt wird ja gleich die URL angezeigt die der Artikel später haben wird, also z.B. bei iPad ist veraltet kommt dann folgendes:

Code:
Permalink: ****/ipad-ist-veraltet.html


Ich bräuchte auch sowas, und das is ja schon bischen mehr als einfach Leerzeichen durch "-" zu ersetezn, weis jemand obs sowas schon fertig gibt?
Hab schon gesucht weis aber nich wirklich wonach ich suchen soll^^


Gruß
David


Valle
Chief Development Officer
Geschrieben am 11.02.2010 um 17:25 Uhr.
Avatar von Valle

Status: offline
Registriert: 29.06.2007
Beiträge: 1879
Bits: 8 662,65
Geschlecht: männlich


Ob es das gibt kann ich dir nicht sagen. Ich will dir aber sagen, dass es mittlerweile "out" ist, seine URLs mit .html enden zu lassen. Daher meine Empfehlung, die ich auch schon von einigen "SEO-Experten" gehört habe: Lass die HTML-Endung weg und mach' lieber noch ein Element davor. z.B.:

/forum/team+forum/admin+will+weltherrschaft+erringen

Für die technische Umsetzung benutzt du am besten eine weitere Spalte in deiner Thread-Tabelle. Die könnte z.B. "urlname" (so mach ich das) oder "nicename" (ich glaube WP macht das so) nennen. Diese sollten dann umbedingt einen MySQL-Index verpasst kriegen, unzwar vom Typ "Unique".

Die Formatierung des "urlnames" ist nicht sonderlich schwer. Erstmal wandelst du alles in Kleinbuchstaben um. Danach ersetzt du verschiedene Zeichen, z.B. das Leerzeichen, Umlaute oder Akzente (diese einfach weglassen). Alles was nicht bekannt ist (Komma, Ausrufezeichen, Steuerzeichen, usw.) Lässt du einfach weg.

Liebe Grüße,
Valle:-)

 

David
Freak
Geschrieben am 11.02.2010 um 17:37 Uhr.
1 mal geändert. Zuletzt am 11.02.2010 um 19:08 von David.
Avatar von David

Status: offline
Registriert: 18.05.2008
Beiträge: 442
Bits: 8 681,75
Geschlecht: männlich


Ok, das mit html will ich auch garnicht war eben nur ein Beispiel;)

Mein Problem war eher wie ich den String erzeug der nacher iwie die URL bildet, danke für den Tipp, werd mich gleich dran machen.

Kann das ding ja bei Interesse dann veröffentlichen ...

EDIT:
Also ich bin irgendwie nicht fähig was zu finden was mir helfen könnte.
Also ich würd gern alle zeichen auser a-z/A-Z, 0-9 sowie , . - _ aus einer Variable löschen, danach noch , und . durch - oder _ zu ersetzen ist nicht das Problem, aber wie mach ich das? Google jetzt schon länger mit regulären Ausrücken aber die Erleuchtung hab ich nochnich bekommen.

Weis da vlt jmd was?


Gruss
David


Valle
Chief Development Officer
Geschrieben am 11.02.2010 um 21:01 Uhr.
5 mal geändert. Zuletzt am 11.02.2010 um 21:51 von Valle.
Avatar von Valle

Status: offline
Registriert: 29.06.2007
Beiträge: 1879
Bits: 8 662,65
Geschlecht: männlich


Ich würde in folgender Reihenfolge durchgehen.

1) strtolower (Alle Buchstaben in Kleinbuchstaben)
2) str_replace (ausgewählte Zeichen ersetzen)
3) Mit einer Schleife, substr, strlen und in_array alle nicht bekannten Zeichen (Whitelist-Prinzip) aus dem String löschen. Das könnte so aussehen.
4) Erneut mit str_replace doppelte Leerzeichen (die jetzt Minuse sind) entfernen.
5) Zum Schluss noch Leerzeichen (Minuse) am Anfang und am Ende mit trim entfernen.

PHP-Code:
<?php
function make_urlname($name)
{
    
/* Schritt 1: Kleinbuchstaben */
    
$name strtolower($name);

    
/* Schritt 2: Ausgewählte Zeichen ersetzen */
    
$name str_replace(" ""-"$name);
    
$name str_replace("ß""ss"$name);
    
$name str_replace("ä""ae"$name);
    
$name str_replace("ö""oe"$name);
    
$name str_replace("ü""ue"$name);
    
    
/* Schritt 3: Alles andere entfernen */
    
$whitelist = array('a''b''c''d''e''f''g''h''i''j''k',
        
'l''m''n''o''p''q''r''s''t''u''v''w''x''y',
        
'z''0''1''2''3''4''5''6''7''8''9''-''+');
    
$name_tmp "";
    for (
$i=0$i<strlen($name); $i++) {
        
$char substr($name$i1);
        if (
in_array($char$whitelist)) {
            
$name_tmp .= $char;
        }
    }

    
/* Schritt 4: Doppelte Leerzeichen entfernen */
    
$count = -1;
    while (
$count != 0) {
        
$name_tmp str_replace('--''-'$name_tmp$count);
    }

    
/* Schritt 5: Leerzeichen (d.h. '-') am Anfang und am Ende entfernen */
    
return trim($name_tmp'-');
}




(ungetestet.)

Edit:// Funktion draus gemacht und deutsche Bezeichner durch englische ersetzt.
Edit 2:// Funktion ergänzt und korrigiert und kommentiert.
Edit 3:// Getestet und erneut ergänzt.
Edit 4:// Und weiter ergänzt...;-)

Liebe Grüße,
Valle:)

 

David
Freak
Geschrieben am 11.02.2010 um 21:18 Uhr.
2 mal geändert. Zuletzt am 11.02.2010 um 21:51 von Valle.
Avatar von David

Status: offline
Registriert: 18.05.2008
Beiträge: 442
Bits: 8 681,75
Geschlecht: männlich


Thx für die Funktion, habs aber auch selber hinbekommen:P

Mach das schön über Ajax und die php Datei die's verarbeitet sieht dann so aus:
PHP-Code:

header('Content-Type: text/html; charset=utf-8'); // sorgt für die korrekte Kodierung
header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0');
// ist mal wieder wichtig wegen IE

$string_input = $_POST['title'];


$string = eregi_replace("[^0-9a-z\040]","",$string_input);
strtolower($string);
$string= str_replace(" ","_",$string);

echo $string;




Funzt einwandfrei:)

trotzdem nochmal danke für die Mühe auch wenn sie nicht zum Einsatz kommt Valle^^

Gruss
David


Valle
Chief Development Officer
Geschrieben am 11.02.2010 um 21:20 Uhr.
1 mal geändert. Zuletzt am 11.02.2010 um 21:22 von Valle.
Avatar von Valle

Status: offline
Registriert: 29.06.2007
Beiträge: 1879
Bits: 8 662,65
Geschlecht: männlich


Kein Problem, ich werde sie demnächst selbst brauchen.;-)

Deine Funktion ist übrigens ziemlich schlecht. Unterstriche in URLs sind häßlich, das Umwandeln in Kleinbuchstaben funktioniert nicht und außerdem kann wird es zu Problem mit Slash oder Fragezeichen führen, da diese einfach in die URL übernommen werden. Findest du das Problem in folgender URL? Wenn nicht, dann ruf mal eine Datei mit dieser URL auf und schau dir die REQUEST_URI an.;-)

/forum/team-forum/ist-das-eine-korrekte-url?-nein-ist-es-nicht!

Also vorsichtig bitte.;-)

Liebe Grüße,
Valle

 

David
Freak
Geschrieben am 11.02.2010 um 21:35 Uhr.
1 mal geändert. Zuletzt am 15.02.2010 um 22:06 von David.
Avatar von David

Status: offline
Registriert: 18.05.2008
Beiträge: 442
Bits: 8 681,75
Geschlecht: männlich


Hab jetz noch schnell das mit äöü eingebaut und auch das mit der whitelist kopiert ...

Deine URL wird somit "gefressen", *** kannst's dir ja mal anschauen, gibts hier auch sowas wie private-text in nem Post, wär mal ne gute Funktion.

Aber auch deine Funktion stoppt einfach bei &

MFG
David


Valle
Chief Development Officer
Geschrieben am 11.02.2010 um 21:39 Uhr.
Avatar von Valle

Status: offline
Registriert: 29.06.2007
Beiträge: 1879
Bits: 8 662,65
Geschlecht: männlich


Meine Funktion lässt das Und-Zeichen wegfallen. Das ist auch gut so.;-)
Ich habe die Funktion oben nochmal editiert, jetzt ist sie weitgehenst vollständig.

Hier findest du sie in Aktion.:-)

Liebe Grüße,
Valle

 

David
Freak
Geschrieben am 11.02.2010 um 21:49 Uhr.
1 mal geändert. Zuletzt am 11.02.2010 um 22:19 von David.
Avatar von David

Status: offline
Registriert: 18.05.2008
Beiträge: 442
Bits: 8 681,75
Geschlecht: männlich


Ich glaub das Problem mit dem & hat seinen Ursprung irgendwo im Javascript-Teil. D

Denn wenn ich dass ausgeb was beim Script ankommt, und ich folgendes "test&nochmal einer" eingeb, geht es wie man sehen kann nachdem "&" garnichtmehr weiter.

Setz ich aber im Script $string_input = "test&nochmal einer" (ich lass das & inzwischen durch " " ersetzen) erhalte ich diese Ausgabe: "test-nochmal-einer" -> & macht im JS-Teil Problem, also mal suchen gehen ...

EDIT:
Das Problem ist das die Daten mit Javascript/Ajax per Post an's PHP Script übergeben werden, und um mehere Variablen zu übergeben wird wie bei GET auch das & eingesetzt, kommt das & allerdings in einer zu übergebenden Variable vor gibts natürlich ne Fehler.

Die Lösung ist also mit
Code:
var article_title = article_title.replace('&','-');

das & zu ersetzen, gibt es aber ein zweites $ in article_title wird das zweite nicht ersetzt, die Lösung zu dem Problem ist also eine for schleife:
Code:
for ($i=0; $i<article_title.length; $i++) {
var article_title = article_title.replace('&','-');
}




Gruss
David


blubb
42
Geschrieben am 11.02.2010 um 22:38 Uhr.
Avatar von blubb

Status: offline
Registriert: 09.11.2007
Beiträge: 1169
Bits: 19 663,20
Geschlecht: männlich


in javascript solltest du mit urlencode oder ähnliches (base64 bräuchte extra Funktion, ist nicht in js vorhanden) den String schützen, musst den dann auf der Serverseite wieder herstellen, sonst wird der ganz schnell als Bestandteil der URL aufgefasst;)

 
[--access denied--]
THIS IS SPARTA


Smoking kills

Thread anschauen :: Wordpress URL-Funktion

Login
Name und Passwort:
Passwort vergessen?

Werbung






Copyright © 2007 - 2010 by iBitLive.eu

  Los!