SEO vriendelijke URL's: Latijnse letters, lowercase

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Software Ontwikkelaar PHP

Functie omschrijving Software Ontwikkelaar PHP gezocht! Wij zijn op zoek naar een ervaren PHP Software Ontwikkelaar om het team van onze opdrachtgever te versterken! De ideale kandidaat zal fungeren als verlengstuk van klanten en complexe technische vraagstukken met enthousiasme benaderen. Naast het werken met de nieuwste technologieën, ben je in staat om aan meerdere projecten tegelijkertijd te werken. Als je deze uitdaging aangaat, werk je nauw samen met front-end developers en draag je bij aan het realiseren van grote veranderingen bij klanten. Het bedrijf zoekt iemand die zichzelf graag uitdaagt en altijd streeft naar het leveren van de beste resultaten.

Bekijk vacature »

Fullstack developer - medior

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie willen werken? Voor een mooi softwarebedrijf in omgeving Gorinchem zijn wij op zoek naar versterking. Als Fullstack developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Werkzaamheden 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 end werken! Bedrijfsprofiel Onze

Bekijk vacature »

PHP Developer (junior functie)

Functie omschrijving Wij zijn op zoek naar een PHP Developer! Ben jij een starter en wil je werken bij een jong en leuk bedrijf? Lees dan verder! Wij zijn op zoek naar een PHP Developer binnen een junior functie. Binnen dit bedrijf gaat het om persoonlijke aandacht en ontwikkeling! Je komt te werken voor een leuk communicatiebureau die alles op het gebied van online en offline communicatie doet. Dit doen zij voor verschillende branches, waardoor je aan diverse soorten projecten mag werken, dit maakt deze baan erg leuk! Daarbij werk je aan een door hun zelf ontwikkeld framework welke goed

Bekijk vacature »

.NET Developer Senior

Dit ga je doen Het ontwikkelen van backend applicaties in C#; Het maken van vele koppelingen met andere ERP-applicaties zoals JD Edwards en SAP; Je bent (mede) verantwoordelijk voor het opstellen van technisch ontwerpen voor de te ontwikkelen software oplossingen; Je bent gemiddeld 90% van je tijd inhouse oplossingen aan het ontwikkelen en testen. De overige 10% van je tijd ben je bij klanten op locatie om oplossingen te implementeren, klanten te begeleiden en de software verder te innoveren; Naast het zelfstandig ontwikkelen van software oplossingen ben je ook bezig met het waarborgen van je contacten bij de klant, het

Bekijk vacature »

Medior/senior Back-end developer gezocht!

Functie Vanwege de groei binnen het bedrijf zijn we op zoek naar versterking in het devlopmenttean. Als back-end developer bouw je aan de bedrijfssoftware die ons helpt bij de primaire processen. Een leuk (intern) project dus waarbij je de software continu doorontwikkeld! Je werkt in een klein team, we hebben dagelijks stand-ups en iedere twee weken een scrum-sessie, begeleid door onze Scrum Master. Hierin krijg je uitgebreid de kans om je ideeën te presenteren, en te overleggen met je mede-ontwikkelaars en de Product Owner. Binnen de ontwikkelteams gebruiken we Trello, Gitlab, Jiira, Confluence en Boockstack. Hiernaast werken ze met de

Bekijk vacature »

Developer

Functie omschrijving Gaat jouw hart sneller kloppen van software developen in C#.NET? Voor een softwarebedrijf in regio Den Bosch zijn wij op zoek naar een C# programmeur. Lees snel verder! Wat ga je doen? Je gaat werken met C# en ASP.NET MVC Framework om onder meer webapplicaties, webshops en websites te ontwikkelen. Je optimaliseert de bestaande software en helpt mee aan het automatiseren van bedrijfsprocessen. Je gaat samen met je collega's de juiste oplossing op basis van de wensen van de klanten uitwerken tot een mooi product. Bedrijfsprofiel Het ontwikkelen van softwareoplossingen en kantoorautomatiseringen is waar dit bedrijf voor staat.

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 »

Remote - Front-end Angular developer

Functie The IT team currently consists of the IT Manager, 2 back-end developers, 1 full-stack developer, 1 designer, and a DevOps engineer. They are currently looking for an experienced Front-end developer who will work autonomously and in a disciplined manner, being the only developer working on their Front-end applications at the start. They do have the ambition to find a second developer soon, who you will then be able to supervise. You will be working on the further development of their existing UI in Angular. But also developing a mobile app. They place great value on User Experience and opt

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 »

Integratie expert - Java Developer

Dit ga je doen Nieuw koppelingen ontwerpen, ontwikkelen en implementeren; Je schakelt met de klanten om hen zo goed mogelijk van dienst te zijn. Strategisch kijken naar nieuwe mogelijkheden op bestaande of nieuwe koppelingen zo effectief mogelijk te realiseren; Je bestaande toolset afwegen tegen nieuwe mogelijkheden om integratiedoelen steeds effectiever en/of effcienter te bewerkstelligen; Bestaande software koppelingen beheren, dit zijn koppelingen met zowel interne als externe systemen; Overleg met zowel directe collega's als met stakeholders om nieuwe integratieplannen concreet te maken; Je kunt de junioren meenemen op sleeptouw. Hier ga je werken Onze klant is op zoek naar een ervaren

Bekijk vacature »

Frontend Developer Vue Nuxt HBO Javascript

Samengevat: Deze werkgever levert elke dag betere digitale gebruikerservaringen. Ben jij geschikt als frontend Developer? Heb je ervaring met Vue en Nuxt? Vaste baan: Front-End Developer HBO €3.100 - €4.600 Zij bieden opdrachtgevers een complete dienstverlening op gebied van ontwerpen en ontwikkelen van websites, zoekmachine optimalisatie, online adverteren, content marketing en conversie verbetering. Zij werken met een eigen ontwikkeld CMS. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om de inzet van technologie. Deze werkgever staat open voor elke nieuwe trend. Onze systemen zijn groot

Bekijk vacature »

Senior Product Developer

Functieomschrijving Als senior Product Developer ben je verantwoordelijk voor bestaande mobiliteitsproducten en de ontwikkeling van nieuwe mobiliteitsconcepten. Met behulp van diverse klantonderzoeken, klantsessies en salesmeetings zorg je ervoor dat je de veranderende mobiliteitsbehoeften in de markt kent. Hier speel je op in door innovatieve, flexibele, efficiënte en duurzame vervoersoplossingen te bedenken, te ontwikkelen, te implementeren en uiteindelijk samen met Sales en Marketing collega’s in de markt te zetten. Je initieert en neemt deel aan (internationale en afdeling overschrijdende) projecten, vaak in de rol van projectleider. In die rol bewaak je de voortgang, coördineer je de activiteiten en zorg je voor

Bekijk vacature »

Software Ontwikkelaar .NET te Zaandam

Bedrijfsomschrijving Je komt hier terecht bij een door-en-door softwarebedrijf, waarbinnen meerdere SaaS pakketten worden ontwikkelt voor diverse sectoren. Hierbij kun je denken aan bijvoorbeeld de logistieke en medische branche. Deze organisatie kenmerkt zich door de hoge mate van complexiteit in de applicaties, wat betekent dat jij je hier niet zal gaan vervelen. Integendeel: Jij gaat hier elke dag ontzettend veel leren en je in razend tempo ontwikkelen als C# .Net Developer met focus op back-end. Het team bestaat uit ongeveer 20 personen personen, waarvan het grootste deel zich richt op software development. De sfeer is informeel en professioneel. De producten

Bekijk vacature »

Front end ontwikkelaar

Functie Het huidige team bestaat uit momenteel uit 5 back end developers verdeeld van senior tot junior. Omdat de gehele front end van applicaties anders gaan insteken zijn ze op zoek naar een ervaren Front end developer die hen kan helpen de juiste keuzes te maken. Je krijgt veel vrijheid om te bepalen hoe je dit wilt ontwikkelen en vrijheid in welke techniek je hiervoor wilt gebruiken. Je zult je dus bezighouden met architectuur, documentatie en natuurlijk ontwikkeling van nieuwe functionaliteiten binnen de verschillende applicaties. natuurlijk heb jij ook mogelijkheden om te sparren binnen het team, maar ze gaan uit

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Wil jij bij een platte en informele organisatie werken? Lees dan snel verder! Voor een opdrachtgever in omgeving Rotterdam dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen PHP, JAVA en Node.js. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn

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 17:02:00
 
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.