SEO vriendelijke URL's: Latijnse letters, lowercase

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Social Media Specialist

Social Media Specialist locatie: Rotterdam (Zuid Holland) Wij zoeken op korte termijn een nieuwe collega, een social media specialist/ adviseur sociale media (24 uur), voor ons sprankelende team Communicatie van CJG Rijnmond. Onze focus ligt op het informeren en binden van onze in- en externe klanten en stakeholders en het versterken van onze naamsbekendheid en zichtbaarheid. Dat doen we in nauwe samenwerking met elkaar. Over de functie Ons team bestaat uit 7 communicatieprofessionals met ieder een eigen expertise. Als lid van het online team ben je verantwoordelijk voor het ontwikkelen, uitvoeren en analyseren van onze socialemediastrategie. Ook stel je campagnes

Bekijk vacature »

Ambitieuze Junior/Medior Low-code Developers gezoc

Bedrijfsomschrijving Transformeer bedrijven met jouw expertise in innovatieve technologie Ben je een bedreven softwareontwikkelaar met ervaring in Low-code platformen, of sta je te popelen om je in deze baanbrekende oplossing te verdiepen? Wij zijn op zoek naar jou! Ons klantenbestand groeit en we willen ons team uitbreiden met deskundige en leergierige Low-code specialisten. Is het jouw passie om organisaties te ondersteunen in hun digitale transformatie en maatwerkoplossingen te bieden met behulp van geavanceerde software? Wij zijn een vooruitstrevend bedrijf dat dagelijks werkt aan het oplossen van complexe vraagstukken om de digitale ambities van onze klanten te realiseren. Functieomschrijving Ontwikkel op

Bekijk vacature »

Full Stack .NET Developer

Dit ga je doen Als developer nieuwe gave features ontwikkelen; Werken met technieken als C#, Angular 12 en Javascript,; Maken van technische keuzes en beslissingen over de architectuur; Junior collega's coachen; Initiatief nemen voor nieuwe technische mogelijkheden; Je bent een belangrijke schakel - en vindt het leuk - om te schakelen met de business. Hier ga je werken In een team van 7 professionals ben je als Full Stack .NET Developer verantwoordelijk voor het ontwikkelen van applicaties voor het grootste inhouse product: een applicatie voor alles omtrent hypotheken. De programmeertaal die je hierbij beheerst is C#. Wil je van meerwaarde

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een uitdagende werkgever in omgeving Waalwijk zijn wij op zoek naar een enthousiaste softwareontwikkelaar met kennis of ervaring met C# en SQL. In een uitdagende rol als C#.NET Developer werk je samen met een enthousiast en informeel team aan het bouwen van maatwerk software voor variërende klanten. Verder ziet jouw takenpakket er als volgt uit: Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je houdt je bezig met het ontwikkelen

Bekijk vacature »

.NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

Software Developer

Dit ga je doen Ontwerpen, ontwikkelen en onderhouden van (mobiele) internettoepassingen; Ontwikkelen en onderhouden van Microservices; Ontwerpen en optimaliseren van databases; Identificeren van nieuwe trends/ontwikkelingen binnen de branche. Hier ga je werken Deze marktleider op gebied van fietsen en fietservaring is gevestigd in twee provincies, verspreid over meerdere locaties. Jij zult voornamelijk in regio Joure aan de slag gaan. De organisatie doelt zich op het leveren van kwalitatief hoogwaardige producten aan alle hun klanten. De organisatie telt circa 4.000 medewerkers in meer dan 10 verschillende landen. Momenteel is de organisatie op zoek naar een Software Developer wilt meewerken aan het

Bekijk vacature »

Senior Front-end Developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als Senior Front-end Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Onze klantenkring is groot en divers, dat vraagt om flexibiliteit van jou. Tegelijkertijd betekent dit dagelijks nieuwe dingen leren én dat geen werkdag hetzelfde is. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling waarbij iedereen welkom is, zowel

Bekijk vacature »

Full stack .NET developer Microsoft 365

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Front-end PHP Developer

Dit ga je doen Bouwen van de frontend van een nieuwe applicaties; Verbeteren van de user experience; Opstellen van een style guide; Schakelen met collega developers over de te bouwen oplossing; Je speelt een belangrijke rol in het neerzetten van het nieuwe systeem; Werken met o.a. Symfony 6, API Platform, Twig, Javascript, Redis Automatiseren van processen; Koppelen van verschillende functionaliteiten; Unit tests, integration tests, end-to-end tests; In de toekomst ga je nog werken aan andere projecten. Hier ga je werken Voor onze vaste opdrachtgever in de regio Breda zijn wij op zoek naar een Frontend Developer. Het betreft een organisatie

Bekijk vacature »

Junior/Medior Front-end developer

Functie Als Front-end developer werk je intensief samen met 1 van de UX-designers en denk je mee over de gebruiksvriendelijkheid en design van onze web- en mobile apps. Je bent betrokken bij sessies met gebruikers om designs te valideren en usability van de app-in-wording te testen. Vervolgens gebruik je dit om samen met je team waarin ook back-end (.NET) developers zitten, te zorgen voor de realisatie van de best mogelijke apps voor studenten en docenten. Eisen • Je hebt een hands-on development en coding mind-set en werkt graag aan een high quality code base welke je consequent onderhouden kan worden

Bekijk vacature »

Senior .NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

Software developer

Werkzaamheden voor jou als software developer Voor een goede relatie in de regio Zwolle (meerdere locaties) zoeken wij een software developer die betrokken is bij de ontwikkelcyclus en verantwoordelijk is voor het testen en keuren van nieuwe en geoptimaliseerde software. In deze functie ben je in de implementatiefase de persoon die risico's beoordeelt en intern oplossingen aanbrengt om risico's te verkleinen. Binnen het ontwikkelteam van de software ben je een belangrijke schakel waar je intensief meewerkt met scrum. Het voorkomen van bugs in de programma's en het bevorderen van gebruiksvriendelijkheid voor eindklanten zijn voor jou een uitdaging en geeft voldoening

Bekijk vacature »

Frontend Developer

Functieomschrijving Voor de NIPV zijn wij opzoek naar een Frontend Developer. Als Frontend Developer ga jij aan de slag om dashboards te bouwen vanuit het datawarehouse. Dit stelt NIPV in staat om snel en eenvoudig bij correcte bedrijfsvoeringsinformatie te kunnen. Je ontwikkelt dashboards in PowerBI, publiceert en onderhoud die, verzameld en verwerkt feedback in overleg met het ontwikkelteam. Naast dashboards ontwikkel en onderhoud je een datamodel in Excel waarmee adviseurs, controllers en analisten in staat worden gesteld om de gegevens uit de dashboards te raadplegen en anders te filteren of bepaalde gegevens nader te verfijnen, zodat verdiepende vragen kunnen worden

Bekijk vacature »

Full stack Python developer

Functie Samen met andere collega’s (een product owner, een software manager en een ervaren ontwikkelaar) ga jij onze producten verder ontwikkelen. Jouw verantwoordelijkheden zullen bestaan uit: – Verder wil gaan met de ontwikkeling van onze bestaande producten; nieuwe features! – Meedenkt over de roadmap van onze producten – Als sparringpartner kan optreden op het gebied van development – Zelf ook nieuwe ideeën op tafel durft te leggen en deze van scratch af aan wilt bouwen Hieronder ook een paar voorbeelden van projecten waar we momenteel mee bezig zijn of binnenkort aan willen beginnen: – Real-time interactie creëren in onze web

Bekijk vacature »

Software Developer

Functie omschrijving Psst hé jij daar! Op zoek naar een nieuwe uitdaging als developer? Wacht niet langer en reageer direct. In deze functie ga je bij een familiebedrijf werken als developer. Je gaat maatwerk software ontwikkelen met de Microsoft stack. Je gebruikt technieken als C#, ASP.NET en MVC. Je werkt in een leuk team van andere developers. Je krijgt veel vrijheid in je werk en kan flexibel werken. Dagje thuiswerken? Geen probleem! Daarnaast is er veel ruimte om écht mee te denken met het bedrijf en met de klanten. Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Vanaf

Bekijk vacature »

Pagina: 1 2 volgende »

James de Graaf

James de Graaf

07/01/2014 11:48:02
Quote Anchor link
Dag allemaal!

Inmiddels ben ik al een paar dagen aan het knoeien met een stukje code waar ik maar niet uitkom.
Voor de meeste gevorderde PHP gebruikers een eitje, maar voor mij een beginner als mij een helse en frustrerende last.

Huidige situatie:
Mijn mobiele website URL's worden rommelig weergegeven wanneer sprake van:
- symbolen zoals ?!
- Latijnse karakters zoals: ñéâç.

Met andere woorden: een URL met een Spaanstalige titel zoals ¿Por qué mañana? wordt weergegeven als m.mijnwebsite.nl/-Por-qu--ma-ana-.php

Gewenste uitkomst:
- verwijderen symbolen zoals ?! in de URL.
- vervangen van Latijns karakters door de "normale" Europese lettervarianten, m.a.w. ñ>n, é>e.
- hoofdletters vervangen door kleine letters. Dit geldt ook voor Ñ>n, É>e.
Oftewel: m.mijnwebsite.nl/por-que-manana.php

De originele code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
$page->type = sprintf("%s",Utilities::scrub($_POST['type']));
$page->url = sprintf("%s",Utilities::scrub($_POST['url']));

if($page->type=='page'){
    $page->url = preg_replace("/[^A-Za-z0-9-]/","-",$page->title).".php";

if($page->parent > 1){
    $l = getParentById($page->parent,$pages);
    $page->url = preg_replace("/[^A-Za-z0-9-]/","-",$l->title)."/".$page->url;
    }
//print_r($page);
//exit;


De volgende code lijkt hier geschikt voor: http://stackoverflow.com/a/4054740/3158398, echter gecombineerd met mijn data werkt het niet zoals het zou moeten. Bij gebruik van speciale Latijnse letters, worden mijn URL's omgevormd tot http://m.mywebsite.com/.php, oftewel leeg. Daarnaast kan ik slechts hooguit één pagina aanmaken in geval van Latijnse karakters. Bij het proberen aan te maken van meer pagina's stuit ik op de melding: "Paginatitel bestaat al, kies een andere titel". Dit lijkt te maken te hebben met het eerstvolgende stukje code dat na de gebruikte code komt. Om deze reden heb ik deze PError code ook bijgevoerd hieronder:

De gecombineerde codes:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$page->type = sprintf("%s",Utilities::scrub($_POST['type']));
$page->url = sprintf("%s",Utilities::scrub($_POST['url']));

if($page->type=='page'){
$page->url = friendlyUrl($page->title).".php";

if($page->parent > 1){
$l = getParentById($page->parent,$pages);
$page->url = friendlyUrl($l->title)."/".$page->url;
}
    //print_r($page);
    //exit;

    if((!$page->id)&&(file_exists("../".$page->url))){
            PError("Paginatitel bestaat al. Kies een andere titel.");
            exit();
            }


De functie zelf:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
function friendlyUrl ($str = '') {

$friendlyURL = htmlentities($str, ENT_COMPAT, "UTF-8", false);
$friendlyURL = preg_replace('/&([a-z]{1,2})   (?:acute|lig|grave|ring|tilde|uml|cedil|caron);/i','\1',$friendlyURL);
$friendlyURL = html_entity_decode($friendlyURL,ENT_COMPAT, "UTF-8");
$friendlyURL = preg_replace('/[^a-z0-9-]+/i', '-', $friendlyURL);
$friendlyURL = preg_replace('/-+/', '-', $friendlyURL);
$friendlyURL = trim($friendlyURL, '-');
$friendlyURL = strtolower($friendlyURL);
return $friendlyURL;
}


Kan iemand me hierbij helpen? Volgens mij is het meeste al gedaan, maar mis ik net de finishing touch. Ik zou het bijzonder op prijs stellen, als beginner die volkomen vast zit. In ieder geval bedankt voor de moeite!

James.
Gewijzigd op 07/01/2014 11:51:09 door James de Graaf
 
PHP hulp

PHP hulp

24/11/2024 04:59:57
 
Ivo P

Ivo P

07/01/2014 11:56:49
Quote Anchor link
uit een oud script van mij:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
class html
{
static function remove_accents($string)
  {

    $table = array(
        'Š' => 'S', 'š' => 's', 'Ð' => 'Dj', 'ð' => 'dj', 'Ž' => 'Z', 'ž' => 'z', '?' => 'C', '?' => 'c', '?' => 'C', '?' => 'c',
        'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', 'Æ' => 'A', 'Ç' => 'C', 'È' => 'E', 'É' => 'E',
        'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O',
        'Õ' => 'O', 'Ö' => 'O', 'Ø' => 'O', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ý' => 'Y', 'Þ' => 'B', 'ß' => 'Ss',
        'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'å' => 'a', 'æ' => 'a', 'ç' => 'c', 'è' => 'e', 'é' => 'e',
        'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ð' => 'o', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o',
        'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ø' => 'o', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ý' => 'y', 'ý' => 'y', 'þ' => 'b',
        'ÿ' => 'y', '?' => 'R', '?' => 'r',
    );


    return strtr($string, $table);
  }
}

?>
 
Michael -

Michael -

07/01/2014 11:56:49
Quote Anchor link
In die link die je zelf aangeeft zie ik een functie die je mogelijk hierin kan gebruiken
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
function sanitize_text_for_urls( $str ) {
  return strtolower( strtr( preg_replace('/[^a-zA-Z0-9-\s]/u', '', iconv( 'UTF-8', 'ASCII//TRANSLIT', $str )), ' ', '-') );
}


// For example
// Électricité, plâterie   --->  electricite-platerie
// Structure & gros œuvre  --->  structure-gros-oeuvre
// Façade & peinture       --->  facade-peinture

?>
 
Ivo P

Ivo P

07/01/2014 11:57:59
Quote Anchor link
maar de iconv() is simpeler dan mijn script.
Zij het dat iconv() niet per se op elke server werkt.
 
Erwin H

Erwin H

07/01/2014 12:13:26
Quote Anchor link
Wees dan alleen wel zo slim om eerst alles naar klein letters om te vormen en dan pas de speciale karakters te vervangen. Scheelt je de helft aan mogelijke karakters.....
 
James de Graaf

James de Graaf

07/01/2014 13:49:24
Quote Anchor link
Bedankt heren voor de snelle reacties! Ik zal jouw tip meenemen Erwin H, bedankt!

Ik ben aan de slag gegaan met beide codes van Ivo P en Michael-
Helaas werkt het nog steeds niet. De melding "Paginatitel bestaat al" is gelukkig niet meer aan de orde.
Echter, worden Latijnse karakters nog steeds vervangen door een streepje "-"
.

Mijn code ziet er, voor het gemak vanwege de lengte van de laatstgenoemde code door Michael-, nu als volgt uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    if(!$page->title){
        PError("Vul een titel in.");
        }
    $page->type = sprintf("%s",Utilities::scrub($_POST['type']));
    $page->url = sprintf("%s",Utilities::scrub($_POST['url']));
 
  if($page->type=='page'){
    $page->url = sanitize_text_for_urls($page->title).".php";
 
  if($page->parent > 1){
    $l = getParentById($page->parent,$pages);
    $page->url = sanitize_text_for_urls($l->title)."/".$page->url;
  }

    if((!$page->id)&&(file_exists("../".$page->url))){
        PError("Paginatitel bestaat al. Kies een andere titel.");
        exit();
        }
    }


De functie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
function sanitize_text_for_urls( $str )
{
  return strtolower( strtr( preg_replace('/[^a-zA-Z0-9-\s]/u', '', iconv( 'UTF-8', 'ASCII//TRANSLIT', $str )), ' ', '-') );
}


Positie van deze functie: na afsluiting van een voorafgaande functie en voor (mocht dit er toe doen):

class Squeeze
{
public $theme;
public $offer;
public $call;
public $find;
public $pnav;
public $lnav;
public $active;
}

etc. etc.
Gewijzigd op 07/01/2014 13:51:20 door James de Graaf
 
Ivo P

Ivo P

07/01/2014 14:04:10
Quote Anchor link
doe dat eens stap voor stap:

function sanitize_text_for_urls( $str )
{
return strtolower( strtr( preg_replace('/[^a-zA-Z0-9-\s]/u', '', iconv( 'UTF-8', 'ASCII//TRANSLIT', $str )), ' ', '-') );
}

Maak deze functie eerst eens als

function sanitize_text_for_urls( $str )
{
return iconv( 'UTF-8', 'ASCII//TRANSLIT', $str );
}

en breid dat daarna steeds verder uit
 
James de Graaf

James de Graaf

07/01/2014 14:09:36
Quote Anchor link
Dank je Ivo P! Lees overigens net pas dat je had aangegeven de iconv functie niet op elke server werkt.
Als we het over de door jou opgezette functie zouden hebben, wat zou de reden kunnen zijn dat hij 'm ook niet pakt?

Functie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
class html
{
static function remove_accents($string)
  {

    $table = array(
        'Š' => 'S', 'š' => 's', 'Ð' => 'Dj', 'ð' => 'dj', 'Ž' => 'Z', 'ž' => 'z', '?' => 'C', '?' => 'c', '?' => 'C', '?' => 'c',
        'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', 'Æ' => 'A', 'Ç' => 'C', 'È' => 'E', 'É' => 'E',
        'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O',
        'Õ' => 'O', 'Ö' => 'O', 'Ø' => 'O', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ý' => 'Y', 'Þ' => 'B', 'ß' => 'Ss',
        'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'å' => 'a', 'æ' => 'a', 'ç' => 'c', 'è' => 'e', 'é' => 'e',
        'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ð' => 'o', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o',
        'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ø' => 'o', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ý' => 'y', 'ý' => 'y', 'þ' => 'b',
        'ÿ' => 'y', '?' => 'R', '?' => 'r',
    );


    return strtr($string, $table);
  }
}

?>


Code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    $page->type = sprintf("%s",Utilities::scrub($_POST['type']));
    $page->url = sprintf("%s",Utilities::scrub($_POST['url']));
 
  if($page->type=='page'){
    $page->url = remove_accents($page->title).".php";
 
  if($page->parent > 1){
    $l = getParentById($page->parent,$pages);
    $page->url = remove_accents($l->title)."/".$page->url;
  }

    if((!$page->id)&&(file_exists("../".$page->url))){
        PError("Paginatitel bestaat al. Kies een andere titel.");
        exit();
        }
    }
 
Ivo P

Ivo P

07/01/2014 14:57:26
Quote Anchor link
$page->url = html::remove_accents($page->title).".php";

of er een losse functie van maken en " class html { " + de laatste "}" verwijderen, net als het woordje static.
(bij mij maakt het deel uit van een groter geheel dan alleen deze functie)
 
James de Graaf

James de Graaf

07/01/2014 15:58:22
Quote Anchor link
Ivo P op 07/01/2014 14:57:26:
$page->url = html::remove_accents($page->title).".php";

of er een losse functie van maken en " class html { " + de laatste "}" verwijderen, net als het woordje static.
(bij mij maakt het deel uit van een groter geheel dan alleen deze functie)


Bijna!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function remove_accents($string)
  {
    $table = array(
        '' => 'S', '' => 's', '' => 'Dj', '' => 'dj', '' => 'Z', '' => 'z', '?' => 'C', '?' => 'c', '?' => 'C', '?' => 'c',
        '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'C', '' => 'E', '' => 'E',
        '' => 'E', '' => 'E', '' => 'I', '' => 'I', '' => 'I', '' => 'I', '' => 'N', '' => 'O', '' => 'O', '' => 'O',
        '' => 'O', '' => 'O', '' => 'O', '' => 'U', '' => 'U', '' => 'U', '' => 'U', '' => 'Y', '' => 'B', '' => 'Ss',
        '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'c', '' => 'e', '' => 'e',
        '' => 'e', '' => 'e', '' => 'i', '' => 'i', '' => 'i', '' => 'i', '' => 'o', '' => 'n', '' => 'o', '' => 'o',
        '' => 'o', '' => 'o', '' => 'o', '' => 'o', '' => 'u', '' => 'u', '' => 'u', '' => 'y', '' => 'y', '' => 'b',
        '' => 'y', '?' => 'R', '?' => 'r',
    );

    return strtr($string, $table);
  }


Waar een vraagteken '?' inderdaad een 'r' wordt, is dat bij de (meeste) andere letters niet het geval. 'ñ' blijft bijvoorbeeld 'ñ'

De functie dus veranderd. De code heb ik onveranderd gebruikt.
Bij de HTML versie werkt het overigens niet..
Gewijzigd op 07/01/2014 16:05:56 door James de Graaf
 
Ivo P

Ivo P

07/01/2014 16:16:38
Quote Anchor link
Mogelijk zit er een tekenset probleem hierboven:

In mijn bronbestand stond er een R en een r met een accent zoals op é

En dat probleem blijft ook bestaan voor jouw script:
In welke tekenset krijg je jij je teksten binnen? Als dat ISO8859-x is, dan moet je je script met hardcoded deze rare letters ook in die tekenset opslaan.
Doe je dat niet en gebruik je bijvoorbeeld Unicode, dan is de ñ uit jouw invoer inderdaad niet gelijk aan de ñ in het script.
 
James de Graaf

James de Graaf

07/01/2014 16:32:50
Quote Anchor link
Ivo P op 07/01/2014 16:16:38:
Mogelijk zit er een tekenset probleem hierboven:

In mijn bronbestand stond er een R en een r met een accent zoals op é

En dat probleem blijft ook bestaan voor jouw script:
In welke tekenset krijg je jij je teksten binnen? Als dat ISO8859-x is, dan moet je je script met hardcoded deze rare letters ook in die tekenset opslaan.
Doe je dat niet en gebruik je bijvoorbeeld Unicode, dan is de ñ uit jouw invoer inderdaad niet gelijk aan de ñ in het script.


Mijn charset=iso-8859-1. Dan zou die het moeten doen geef je aan? Of bedoel je met "dan moet je je script met hardcoded deze rare letters ook in die tekenset opslaan." dat ik nog een andere stap moet nemen zodat de letters worden overgenomen?
 
Ivo P

Ivo P

07/01/2014 17:01:00
Quote Anchor link
in je editor moet je het script ook opslaan met die tekenset.
 
James de Graaf

James de Graaf

07/01/2014 17:26:42
Quote Anchor link
Ivo P op 07/01/2014 17:01:00:
in je editor moet je het script ook opslaan met die tekenset.


Super, gelukt! Ik zit nu bijna op m'n ideale URL structuur.
Zoals ik aangaf, en jij/jullie hebben gemerkt, heb ik geen ervaring met PHP.
Om deze letters te transformeren naar lower case, weet ik dat kan op basis van "strtolower". Hoe verwerk ik deze optie in jouw functie?

Het allermooiste zou zijn om vraagtekens en uitroeptekens te verwijderen uit de url structuur, zodat de paginanaam ¿Por qué mañana? uitgebeeld wordt in http://m.mijnwebsite.nl/por-que-manana.php. Maar goed, het allerlaatste puntje durf ik bijna niet meer te vragen na al jouw/jullie hulp. Tenzij dit natuurlijk vrij gemakkelijk te verwerken is.

Super bedankt in ieder geval! :-)
Gewijzigd op 07/01/2014 17:27:35 door James de Graaf
 
Ivo P

Ivo P

07/01/2014 17:52:22
Quote Anchor link
als je er vanuit gaat dat na aanroep van die functie alleen nog a-z/0-9 in je tekst zit en de rest leestekens zijn:

iets als:

$string = preg_replace('#[^a-z0-9]+#', '-', strtolower($string));

check even of je dan niet 2 -- achterelkaar kunt overhouden.
 
James de Graaf

James de Graaf

07/01/2014 18:22:36
Quote Anchor link
Ivo P op 07/01/2014 17:52:22:
als je er vanuit gaat dat na aanroep van die functie alleen nog a-z/0-9 in je tekst zit en de rest leestekens zijn:

iets als:

$string = preg_replace('#[^a-z0-9]+#', '-', strtolower($string));

check even of je dan niet 2 -- achterelkaar kunt overhouden.
[/quote

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function remove_accents($string)
  {
    $table = array(
        '' => 'S', '' => 's', '' => 'Dj', '' => 'dj', '' => 'Z', '' => 'z', '?' => 'C', '?' => 'c', '?' => 'C', '?' => 'c',
        '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'C', '' => 'E', '' => 'E',
        '' => 'E', '' => 'E', '' => 'I', '' => 'I', '' => 'I', '' => 'I', '' => 'N', '' => 'O', '' => 'O', '' => 'O',
        '' => 'O', '' => 'O', '' => 'O', '' => 'U', '' => 'U', '' => 'U', '' => 'U', '' => 'Y', '' => 'B', '' => 'Ss',
        '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'c', '' => 'e', '' => 'e',
        '' => 'e', '' => 'e', '' => 'i', '' => 'i', '' => 'i', '' => 'i', '' => 'o', '' => 'n', '' => 'o', '' => 'o',
        '' => 'o', '' => 'o', '' => 'o', '' => 'o', '' => 'u', '' => 'u', '' => 'u', '' => 'y', '' => 'y', '' => 'b',
        '' => 'y', '?' => 'R', '?' => 'r',
    );
    $string = preg_replace('#[^a-z0-9]+#', '-', strtolower($string));
    return strtr($string, $table);
  }


Zoiets? Waarschijnlijk niet :). Heft dat niet de oplossing voor speciale tekens op?
 
Ivo P

Ivo P

07/01/2014 18:27:15
Quote Anchor link
Nee, andersom.
Eerst vertalen van de letters en dan het restant er uit.

En ik voorspel vast een volgende stap: dubbele - en begin of eind - er vanaf/
 
James de Graaf

James de Graaf

07/01/2014 18:56:46
Quote Anchor link
Nope. Nog steeds uppercase. Spaties worden vervangen door spaties i.p.v. een dash (-). Verschillende dingen geprobeerd, waaronder:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function remove_accents($string)
  {
    $string = preg_replace('#[^a-z0-9]+#', '-', strtolower($string));
    $table = array(
        '' => 'S', '' => 's', '' => 'Dj', '' => 'dj', '' => 'Z', '' => 'z', '?' => 'C', '?' => 'c', '?' => 'C', '?' => 'c',
        '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'C', '' => 'E', '' => 'E',
        '' => 'E', '' => 'E', '' => 'I', '' => 'I', '' => 'I', '' => 'I', '' => 'N', '' => 'O', '' => 'O', '' => 'O',
        '' => 'O', '' => 'O', '' => 'O', '' => 'U', '' => 'U', '' => 'U', '' => 'U', '' => 'Y', '' => 'B', '' => 'Ss',
        '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'c', '' => 'e', '' => 'e',
        '' => 'e', '' => 'e', '' => 'i', '' => 'i', '' => 'i', '' => 'i', '' => 'o', '' => 'n', '' => 'o', '' => 'o',
        '' => 'o', '' => 'o', '' => 'o', '' => 'o', '' => 'u', '' => 'u', '' => 'u', '' => 'y', '' => 'y', '' => 'b',
        '' => 'y', '?' => 'R', '?' => 'r',
    );
    return strtr($string, $table);
  }


Ook geprobeerd met (1) $string = preg_replace('#[^a-z0-9] strtolower($string));
of (2) string strtolower ( string $str )

etc. etc.
Gewijzigd op 07/01/2014 18:58:58 door James de Graaf
 
Ivo P

Ivo P

07/01/2014 19:23:33
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

$string
= '¿espanñol? ¡olé!';

$string = remove_accents($string);
$string = preg_replace('#[^a-z0-9]+#', '-', strtolower($string));
$string = trim($string, '-');
?>




Toevoeging op 07/01/2014 19:31:08:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
function remove_accents($string)
  {

    $table = array(
        'Š' => 'S', 'š' => 's', '?' => 'Dj', '?' => 'dj', 'Ž' => 'Z', 'ž' => 'z', '?' => 'C', '?' => 'c', '?' => 'C', '?' => 'c',
        'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', 'Æ' => 'A', 'Ç' => 'C', 'È' => 'E', 'É' => 'E',
        'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O',
        'Õ' => 'O', 'Ö' => 'O', 'Ø' => 'O', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ý' => 'Y', 'Þ' => 'B', 'ß' => 'Ss',
        'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'å' => 'a', 'æ' => 'a', 'ç' => 'c', 'è' => 'e', 'é' => 'e',
        'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ð' => 'o', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o',
        'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ø' => 'o', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ý' => 'y', 'ý' => 'y', 'þ' => 'b',
        'ÿ' => 'y', '?' => 'R', '?' => 'r',
    );

    return strtr($string, $table);
  }


  $string = '¿español? ¡olé!';

  $string = remove_accents($string);
  $string = preg_replace('#[^a-z0-9]+#', '-', strtolower($string));
  $string = trim($string, '-');


  echo $string;
  ?>


getest en bij mij werkt dit

Toevoeging op 07/01/2014 19:32:55:

helaas vernaggelt phphulp een hoop van de tekens: overal waar hierboven een ? staat in $tabel, moet een letter met een raar accent staan (die lang niet allemaal op mijn toetsenbord te vinden zijn.)

Die vraagtekens moet je dan maar verwijderen of vervangen door de letters die van toepassing lijken.
 
James de Graaf

James de Graaf

07/01/2014 19:35:07
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function remove_accents($string)
  {
    
    $string = remove_accents($string);
    $string = preg_replace('#[^a-z0-9]+#', '-', strtolower($string));
    $string = trim($string, '-');
    $table = array(
        '' => 'S', '' => 's', '' => 'Dj', '' => 'dj', '' => 'Z', '' => 'z', '?' => 'C', '?' => 'c', '?' => 'C', '?' => 'c',
        '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'A', '' => 'C', '' => 'E', '' => 'E',
        '' => 'E', '' => 'E', '' => 'I', '' => 'I', '' => 'I', '' => 'I', '' => 'N', '' => 'O', '' => 'O', '' => 'O',
        '' => 'O', '' => 'O', '' => 'O', '' => 'U', '' => 'U', '' => 'U', '' => 'U', '' => 'Y', '' => 'B', '' => 'Ss',
        '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'a', '' => 'c', '' => 'e', '' => 'e',
        '' => 'e', '' => 'e', '' => 'i', '' => 'i', '' => 'i', '' => 'i', '' => 'o', '' => 'n', '' => 'o', '' => 'o',
        '' => 'o', '' => 'o', '' => 'o', '' => 'o', '' => 'u', '' => 'u', '' => 'u', '' => 'y', '' => 'y', '' => 'b',
        '' => 'y', '?' => 'R', '?' => 'r',
    );
    return strtr($string, $table);
  }


Pakt 'ie niet. Vergeef me voor me onbenulligheid, maar zoals je begrijpt had ik tot 4 dagen geleden nog nooit met PHP gewerkt. Wat is de totale juiste code, gecombineerd met jouw code? Dan ben ik er geloof ik eindelijk uit. :)
Gewijzigd op 07/01/2014 19:35:44 door James de Graaf
 
Ivo P

Ivo P

07/01/2014 19:36:06
Quote Anchor link
Afbeelding
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.