2017-10-04 5 views
1

J'ai une liste des abréviations comme des vers:PHP: Remplacer le texte Assorti avec querystring

Mt=80 
Lu=81 
Rv=92 
Nd=95 
etc. 

Je suis actuellement jquery pour convertir ces liens:

<a href="page.php?q=Mt 5: 2">Mt 5: 2</a> 
<a href="page.php?q=Mt 5: 2">Nd 14: 25</a> 

et les rend comme suit:

<a href="page.php?book=Mt&chapter=5&vmin=2">Mt 5: 2</a> 
<a href="page.php?book=Nd&chapter=15&vmin=25">Nd 14: 25</a> 

Le script utilisé pour qui:

$(document).ready(function() { 
    $("a[href='page.php']").each(function(index, element){ 
    href = $(element).attr('href'); // get the href 
    text = $(element).text().split(' '); // get the text and split it with space 
    $(element).attr('href', href + "?book=" +$.trim(text[0])+"&chapter="+$.trim(text[1].slice(0,-1))+"&vmin="+$.trim(text[2])); //create desired href and replace it with older-one 
    }); 
}); 

Ce que je besoin est de traduire le texte entre > < au nombre approprié (Mt = 80, Lu = 81, Rv = 92, Nd = 95 .. etc.), de sorte que les liens convertis devient comme:

+0

Pourquoi '14: 25' est converti en '& chapter = 15 & Vmin = 25' ? (Pourquoi '14:' devient 'chapter = 15'? – Justinas

+0

Merci pour la réponse .. juste respectivement .. trim() utilisé pour supprimer des espaces supplémentaires si la valeur en a (espaces avant/arrière) et slice() utilisé pour supprimer : à partir de la deuxième valeur - donc le premier est le livre, le second est le chapitre et le troisième est vmin – Mike

+0

@Mike IL PARLE DE 'Nd 14: 25'. Ici 'chapter = 15' doit être' chapter = 14' –

Répondre

1

Vous devez créer un tableau jQuery avec vos valeurs prédéfinies et vous devez utiliser la première valeur du texte du lien comme index de tableau pour obtenir la valeur correspondante.

Vérifiez l'extrait ci-dessous: -

var myarray = {'Mt':80, 'Lu':81, 'Rv':92, 'Nd':95};// you can add more values 
 
$(document).ready(function() { 
 
    $("a[href='page.php']").each(function(index, element){ 
 
    href = $(element).attr('href'); // get the href 
 
    text = $(element).text().split(' '); // get the text and split it with space 
 
    $(element).attr('href', href + "?book=" +$.trim(myarray[text[0]])+"&chapter="+$.trim(text[1].slice(0,-1))+"&vmin="+$.trim(text[2])); //create desired href and replace it with older-one 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="page.php">Mt 5: 2</a><br> 
 
<a href="page.php">Nd 14: 25</a>

Note: -

myarray[text[0]] == myarray['Mt'] ==80; //.... so on for other values as well

+0

Fonctionne bien, merci .. Cependant quand j'essaye d'ajouter l'arabe dans le tableau il ne fonctionne pas .. comme {'كم': 80} .. des suggestions? Est-il besoin d'une sorte d'encodage ou quelque chose? – Mike

+0

Pouvez-vous indiquer ce que je ?. devrait chercher ou quelque chose Merci pour votre patience .. – Mike

+0

Vous faites erreur là, il faut quelque chose comme '{ « Mt »: « ce mot arabe »}' –