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
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
|
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. |  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. |  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. |  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. |  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, $i, 1); 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. |  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  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. |  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. |  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. |  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. |  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. |  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  | | | |
|
|