Hallo zusammen,
ich benötige eure Hilfe beim umsetzen einer PHP-Funktion (mit Regex) nach VB.
Ich benutze den Onlineshop (Prestashop) um meine kleine Welt an Ersatzteilen für mich privat und lokal Zuhause zu organisieren. Leider kann ich dort nicht alles so eingeben und verwalten wie ich es gerne hätte. Kurzum bin ich dabei, mir ein Programm in VB zu schreiben, um Daten direkt in die MySQL-DB zu schreiben. Leider fehlt mir einiges an PHP-Kenntnissen, um alles in der unten angefügten Funktion nachzuvollziehen zu können.
Bei meinem aktuellen Problem gibt in der MySQL Tabelle ein Feld, in dem die (Kategorie)-Bezeichnung als gültige URL gespeichert wird und ich schaffe (raffe) es einfach nicht die PHP-Funktion in VB umzusetzen. Ich wende mich deshalb mal an Euch und hoffe, dass Ihr mir weiterhelfen könnt.
Zu meiner Schande muss ich gestehen, dass ich das mit den Regex-Pattern grad mal überhaupt nicht kapiere. Eine Funktion, in der ich alle Umlaute im angegebenen String umwandle habe ich bereits. Mein Hauptproblem beginnt eigentlich in der PHP-Routine ab "// Remove all non-whitelist chars.".
Als Beispiel sieht die Beschreibung "DIN - Stecker, Buchsen & Kupplungen" später als URL in Prestashop wie folgt aus: "din-stecker-buchsen-kupplungen"
Ich habe hier mal die originale PHP-Funktion beigefügt und hoffe dass Ihr mir bei der Umsetzung zu VB helfen könnt.
Spoiler anzeigen
Würde mich freuen, wenn mir jemand von euch weiterhelfen könnte,
Danke und viele Grüße, Michael
ich benötige eure Hilfe beim umsetzen einer PHP-Funktion (mit Regex) nach VB.
Ich benutze den Onlineshop (Prestashop) um meine kleine Welt an Ersatzteilen für mich privat und lokal Zuhause zu organisieren. Leider kann ich dort nicht alles so eingeben und verwalten wie ich es gerne hätte. Kurzum bin ich dabei, mir ein Programm in VB zu schreiben, um Daten direkt in die MySQL-DB zu schreiben. Leider fehlt mir einiges an PHP-Kenntnissen, um alles in der unten angefügten Funktion nachzuvollziehen zu können.
Bei meinem aktuellen Problem gibt in der MySQL Tabelle ein Feld, in dem die (Kategorie)-Bezeichnung als gültige URL gespeichert wird und ich schaffe (raffe) es einfach nicht die PHP-Funktion in VB umzusetzen. Ich wende mich deshalb mal an Euch und hoffe, dass Ihr mir weiterhelfen könnt.
Zu meiner Schande muss ich gestehen, dass ich das mit den Regex-Pattern grad mal überhaupt nicht kapiere. Eine Funktion, in der ich alle Umlaute im angegebenen String umwandle habe ich bereits. Mein Hauptproblem beginnt eigentlich in der PHP-Routine ab "// Remove all non-whitelist chars.".
Als Beispiel sieht die Beschreibung "DIN - Stecker, Buchsen & Kupplungen" später als URL in Prestashop wie folgt aus: "din-stecker-buchsen-kupplungen"
Ich habe hier mal die originale PHP-Funktion beigefügt und hoffe dass Ihr mir bei der Umsetzung zu VB helfen könnt.
PHP-Quellcode
- Public Static Function str2url($str)
- {
- Static $array_str = Array();
- Static $allow_accented_chars = null;
- Static $has_mb_strtolower = null;
- If ($has_mb_strtolower === null) {
- $has_mb_strtolower = function_exists('mb_strtolower');
- }
- If (isset($array_str[$str])) Then {
- Return $array_str[$str];
- }
- If (!is_string($str)) Then {
- Return False;
- }
- If ($str == '') {
- Return '';
- }
- If ($allow_accented_chars === null) {
- $allow_accented_chars = Configuration:get('PS_ALLOW_ACCENTED_CHARS_URL');
- }
- $return_str = trim($str);
- If ($has_mb_strtolower) {
- $return_str = mb_strtolower($return_str, 'utf-8');
- }
- If (!$allow_accented_chars) {
- $return_str = Tools:replaceAccentedChars($return_str);
- }
- // Remove all non-whitelist chars.
- If ($allow_accented_chars) {
- $return_str = preg_replace('/[^a-zA-Z0-9\s\'\:\/\[\]\-\p{L}]/u', '', $return_str);
- } else {
- $return_str = preg_replace('/[^a-zA-Z0-9\s\'\:\/\[\]\-]/', '', $return_str);
- }
- $return_str = preg_replace('/[\s\'\:\/\[\]\-]+/', ' ', $return_str);
- $return_str = str_replace(array(' ', '/'), '-', $return_str);
- // If it was Not possible to lowercase the string with mb_strtolower, we do it after the transformations.
- // This way we lose fewer special chars.
- If (!$has_mb_strtolower) {
- $return_str = Tools:strtolower($return_str);
- }
- $array_str[$str] = $return_str;
- Return $return_str;
- }
Würde mich freuen, wenn mir jemand von euch weiterhelfen könnte,
Danke und viele Grüße, Michael