SEO vriendelijke URL's: Latijnse letters, lowercase

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Fullstack developer

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie werken? Voor een mooi softwarebedrijf in omgeving Alblasserdam zijn wij op zoek naar versterking op de afdeling Software Development! Als Fullstack react.js developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met de back

Bekijk vacature »

Junior Software Developer

Functie omschrijving Wij zijn op zoek naar een Junior Software Developer!? Sta jij aan het begin van jouw loopbaan of heb jij misschien al enige ervaring? Vind jij het daarnaast belangrijk om jezelf constant te kunnen ontwikkelen en uitdagen? Lees dan snel verder! Voor een vooraanstaand softwarehuis in Nieuwegein ben ik op zoek naar een Junior Software Developer. De eigenaar van het bedrijf is ervan bewust dat je als junior nog een hoop kan leren, waardoor je de eerste maanden veel begeleiding en diverse trainingen krijgt. Daarna ga je samen met je collega's aan zowel kleine als grote projecten werken.

Bekijk vacature »

Database Developer

Functieomschrijving Heb jij ongeveer 3 jaar ervaring als Database Developer met MS SQL of een vergelijkbare database? Wil jij werken voor een ambitieuze werkgever in regio Tilburg waar jij volledig de mogelijkheid krijgt jezelf te ontwikkelen? Lees dan snel verder! Hoe ziet jouw takenpakket eruit? Je gaat projecten gedurende het hele proces begeleiden. Je sluit aan bij afspraken met klanten om hun processen helder te krijgen. Vervolgens voer jij het project uit en zorgt dat dit zo goed mogelijk verloopt; Je werkt aan nieuwe softwareoplossingen die de logistieke processen verbeteren of vernieuwen; Je houdt je bezig met het ontwikkelen van

Bekijk vacature »

NodeJS developer

Functie Als Fullstack developer kom je te werken in het ontwikkelteam. Je bent samen met je collega’s continu bezig om de software uit te breiden, maar hiernaast doe je onderzoek naar de inzet van nieuwe technieken, tools of bijvoorbeeld Machine Learning. Ze willen met hun software echt voorlopen op andere en toegevoegde waarde leveren voor de eindgebruiker. Mede hierom zijn ze erg benieuwd naar iemand zijn persoonlijkheid, of hij graag nieuwe dingen uitzoekt (Google!), en initiatief neemt. Qua technische kennis zoeken ze iemand die goed op de hoogte is van de nieuwste ontwikkelingen, daar zij nu ontwikkelen op NodeJs back-end,

Bekijk vacature »

Senior developer (PHP en VB.NET)

Functie De development afdeling bestaat uit 2 teams. Het productteam (10 developers) is verantwoordelijk voor verschillende applicaties met als doel om zoveel mogelijk te automatiseren en uit te werken tot standaard software. Met diverse Solutions Architecten en ervaren developers denken ze voortdurend mee met hun klanten en bouwen ze de basis van het uiteindelijke maatwerk dat wordt geleverd. Hiernaast hebben ze een maatwerk/projectteam. Dit team bestaat momenteel uit 8 developers (junior tot senior) en is verantwoordelijk voor het maatwerk in hun klantprojecten. Momenteel zijn ze op zoek naar een senior developer die aan de slag gaat in het productteam. Hierin

Bekijk vacature »

Lasrobot Programmeur

Over de functie Off-line programma’s maken die het beste resultaat bij de lasrobot mogelijk maken De programma’s met behulp van teach verder optimaliseren Proactief meedenken over oplossingen en over de juiste invulling van lasmallen Het lasrobotproces zoveel mogelijk optimaliseren Over het bedrijf Onze opdrachtgever is gespecialiseerd in de engineering, productie en assemblage van samengestelde plaatwerkproducten en monodelen uit metaal. Onze klant werkt samen met het team aan de mooiste producten van de toekomst. Binnen dit bedrijf staat een sterk team van specialisten op het gebied van industrial design, mechanical engineering, in-house prototyping en all-round projectmanagement. Met daarbij uiteenlopende kennis in

Bekijk vacature »

C# .NET Developer

Functieomschrijving Voor dit leuke softwarre bedrijf in de omgeving Vught zijn we per direct op zoek naar een C#/.NET Developer. Is development jouw passie en doe je dit graag met C#/.NET? Lees dan snel verder! Jou werkzaamheden zullen zijn: Zorgen voor de optimalisatie van de huidige software en het automatiseren van bedrijfsprocessen. Naar aanleiding van de wensen van de klant ga je, met je collega's op zoel naar passende oplossingen en je werkt dit uit tot een mooi eindproduct. Je gaat webshops, websites en webapplicaties ontwikkelen door middel van ASP.NET, C# en MVC Framework. Bedrijfsprofiel Deze opdrachtgever houdt zich bezig

Bekijk vacature »

Productontwikkelaar Food

Wat ga je doen Als Productontwikkelaar Food ga je nieuwe producten ontwikkelen en bestaande producten verbeteren. Je bent hierbij betrokken bij het gehele proces: van productconcept naar proefreceptuur, het realiseren va het product (op kleine schaal) en het testen van producten in een productieomgeving. Verder: Bewaak je de status van verschillende fases van productontwikkeling en lever je tijdig de benodigde data aan Ben je bezig met de optimalisatie van oude en nieuwe recepturen Begeleid of organiseer je proefsessies (sensorisch onderzoek) in het team en/of bij klanten Onderhoud je contacten met de klanten, leveranciers van grondstoffen e.a. externe partijen Houd je

Bekijk vacature »

Teamlead PHP Developer

Functieomschrijving Voor een gewaardeerde werkgever in de buurt van Middelburg zijn wij op zoek naar een gemotiveerde teamlead PHP developer met affiniteit met Symfony/Laravel. Een enthousiast persoon die het ontwikkelteam komt versterken met het aanpakken van uitdagende projecten. Ben jij op zoek naar een uitdaging waar je de tijd en ruimte krijgt jezelf te ontwikkelen en je eigen IT-team aan te sturen? Lees dan snel verder! Die ga je doen: Bijdragen aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de PHP based applicaties; Ontwikkeling en beheer van de serviceportal in Symfony en de webshops in de tweede versie van

Bekijk vacature »

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

C# developer

Functie omschrijving We are looking for a dutch native speaker Ik ben op zoek naar een back-end developer, die met name kennis & ervaring heeft van de programmeertaal C#. Jij gaat aan de slag bij een topspeler in de logistieke sector, die zich behalve met logistiek, ook bezig houdt met softwareontwikkeling. Welke taken komen hierbij kijken? Je gaat desktop- en webapplicaties onderhouden en optimaliseren, waarin je werkt met o.a. C#, ASP.NET, SQL Server en T-SQL. Je hebt regelmatig klantcontact om de wensen in kaart te brengen en te evalueren over de huidige draaiende applicaties. Je implementeert nieuwe functionaliteiten toe aan

Bekijk vacature »

Database Developer

Functieomschrijving Heb jij ongeveer 3 jaar ervaring als Database Developer met MS SQL of een vergelijkbare database? Wil jij werken voor een ambitieuze werkgever in regio Tilburg waar jij volledig de mogelijkheid krijgt jezelf te ontwikkelen? Lees dan snel verder! Hoe ziet jouw takenpakket eruit? Je gaat projecten gedurende het hele proces begeleiden. Je sluit aan bij afspraken met klanten om hun processen helder te krijgen. Vervolgens voer jij het project uit en zorgt dat dit zo goed mogelijk verloopt; Je werkt aan nieuwe softwareoplossingen die de logistieke processen verbeteren of vernieuwen; Je houdt je bezig met het ontwikkelen van

Bekijk vacature »

Front-end developer Consultancy in teamverband wer

Functie Het team bestaat uit User Experience designers, Data Scientists en Software Engineers. Momenteel zijn ze op zoek naar een ervaren Front-end of Fullstack developer die samen met de consultants aan de slag gaat om de business requirements te vertalen naar technische oplossingen. Los van het finetunen van extenties, help je bij het configureren van bijvoorbeeld een mobiel bankieren app. Hierin ben je van A tot Z betrokken en zie je bijvoorbeeld ook toe op de uitvoering van testen. Je expertise wordt optimaal benut en je krijgt verschillende kansen om deze uit te breiden door met verschillende innovatieve technologieën aan

Bekijk vacature »

Medior/Senior Front-end Developers gezocht (Utrech

Functie Het team bestaat uit 10+ gespecialiseerde (veel senior) front-end ontwikkelaars en ontwerpers die werken aan projecten voor klanten van verschillende groottes (kan twee jaar bezig zijn met 1 klant). Je helpt klanten met ingewikkelde front-end vraagstukken, hierbij kun je denken aan: UX/UI design, CI/CD, architectuur en integratie met back-end systemen. De werkzaamheden verricht je op locatie bij de klant, dit is vaak in de Randstad. De organisatiestructuur is plat en er heerst een informele sfeer, zo kun je met vragen dus terecht bij de directie. Er wordt veel nadruk gelegd op het bevorderen van persoonlijke ontwikkeling door middel van

Bekijk vacature »

SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 13382 Introductie We is looking for a HANA Developer to work for our client. The candidate has to have an experience in building Data Intensive Applications (DIA’s). The role of a HANA Developer at ASML involves working on building Data Intensive Applications in an industrial/enterprise environment. The primary responsibility is to handle data from various sources and determine the best way to structure it for use by data analysts, who will run queries and algorithms against it for predictive and prescriptive analytics through machine learning. Wat verwachten we van jou?

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

29/04/2024 15:50:42
 
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.