Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fonction replace() sur tout le texte

53 réponses
Avatar
fra-PasDeSp
Hello

Je trouve l'apostrophe typographique nettement plus classe que
l'apostrophe du clavier.

Aussi j'aimerais mettre en place un petit javascript qui me remplacerait
tous mes apostrophes moches par des apostrophes typographiques (fonction
replace() je pense) dans toute ma page web.

Qui saurait me faire ça ? (Je suis trop mauvais en javascript et ça me
fera gagner un temps fou.)
Merci d'avance.

--
Fra

10 réponses

2 3 4 5 6
Avatar
fra-PasDeSp
Olivier Miakinen <om+ wrote:

> Je pense que le "([A-Za-zÀ-ÿ])'([A-Za-zÀ-ÿ])" a pour but de cibler que
> du texte.

Oui, sauf que ça ne fonctionnera pas dans les cas suivants :
- l'½il (le ½ ne fait pas partie de la zone Latin1 [À-ÿ])
- l'&oelig;il (le & n'a pas été inclus dans la liste)
- c?'aurait (ce c-cédille est en deux caractères, comme le
font des éditeurs sur Mac, au lieu d'un seul)
- rock'n'roll (seule la première apostrophe sera changée)



J'ai effectivement repéré un endroit que j'ai corrigé à la main.

Ma première proposition ne souffrait pas de ce défaut :
remplacer « '(?=[^>]*<) » par « ' ».



Ca se lit comment '(?=[^>]*<) ?

> Je ne vois pas ttrop de cas où le code du html pourrait
> inclure un ' entre deux lettres.

Je vois un cas, mais le remplacement y serait souhaitable :
<img src="..." alt="Vue de l'Arc de Triomphe">



Oui c'est pas génant si l'apostrophe y est changé.
--
Fra
Avatar
fra-PasDeSp
Olivier Miakinen <om+ wrote:

>> Je pense que le "([A-Za-zÀ-ÿ])'([A-Za-zÀ-ÿ])" a pour but de cibler que
>> du texte.
>
> [...]

> Ma première proposition ne souffrait pas de ce défaut :
> remplacer « '(?=[^>]*<) » par « ' ».



J'ai essayé de remplacer ([A-Za-zÀ-ÿ])'([A-Za-zÀ-ÿ]) par '(?=[^>]*<)
dans le script ci-avant mais ça n'a pas marché, ni en enlevant / /g ni
en y mettant des guillemets.
--
Fra
Avatar
Olivier Miakinen
Le 11/06/2015 21:28, (Fra) a écrit :

> Ma première proposition ne souffrait pas de ce défaut :
> remplacer « '(?=[^>]*<) » par « ' ».



J'ai essayé de remplacer ([A-Za-zÀ-ÿ])'([A-Za-zÀ-ÿ]) par '(?=[^>]*<)
dans le script ci-avant mais ça n'a pas marché, ni en enlevant / /g ni
en y mettant des guillemets.



Dans un fichier externe ? Sinon, il faut sans doute écrire &gt; et &lt;
au lieu de > et < ...
Avatar
Olivier Miakinen
Le 11/06/2015 21:28, (Fra) a écrit :

Ma première proposition ne souffrait pas de ce défaut :
remplacer « '(?=[^>]*<) » par « ' ».



Ca se lit comment '(?=[^>]*<) ?



' Une apostrophe droite
(?= Début d'assertion
[^>]* Autant de caractères que l'on veut, sauf des >
< Un <
) Fin d'assertion

En clair, ça veut dire que la regexp s'applique à troute apostrophe
droite telle que le prochain chevron (parmi < et >) est un chevron
ouvrant < et non pas un chevron fermant >.

Autrement dit, on traite tout ce qui se trouve entre > et < et rien
de ce qui se trouve entre < et >
Avatar
Olivier Miakinen
Le 11/06/2015 22:02, je répondais à Fra :

> Ma première proposition ne souffrait pas de ce défaut :
> remplacer « '(?=[^>]*<) » par « ' ».



J'ai essayé de remplacer ([A-Za-zÀ-ÿ])'([A-Za-zÀ-ÿ]) par '(?=[^>]*<)
dans le script ci-avant mais ça n'a pas marché, ni en enlevant / /g ni
en y mettant des guillemets.



Dans un fichier externe ? Sinon, il faut sans doute écrire &gt; et &lt;
au lieu de > et < ...



Et bien sûr, comme caractère de remplacement il faut l'apostrophe
courbe et non la simple quote. Si tu as fait un copier-coller depuis
ton MacSOUP après qu'il a remplacé « ’ » par « ' » comme dans ta
réponse, alors c'est normal que ça ne fasse rien.
Avatar
SAM
Le 11/06/15 20:53, Olivier Miakinen a écrit :

toujours placer le code JavaScript dans un ou
plusieurs fichiers externes (et jamais directement dans le HTML)
ainsi qu'il est largement recommandé dans tous les cas.



Ha! Non !
Le SpeedoReactorAnalyzorDecidorChef de Google ne veut plus de script
distinct !!!
il parait que ça bouffe trop de temps de serveur (maintenant que le web
pénètre plus vite que l'éclair toutes les cases ou paillotes !!!
(bon ! pas la mienne en tous cas :-( ) on n'a plus le temps de continuer
à s'envoyer des en-têtes pour charger des fichiers (sur le serveur ou
depuis le cache) mieux vudrais recharger directement le code inclus en
clair dans le fichier html.

... à ce que j'ai compris !




Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Avatar
SAM
Le 11/06/15 21:28, Fra a écrit :
Olivier Miakinen <om+ wrote:

Ma première proposition ne souffrait pas de ce défaut :
remplacer « '(?=[^>]*<) » par « ' ».





J'ai essayé de remplacer ([A-Za-zÀ-ÿ])'([A-Za-zÀ-ÿ]) par '(?=[^>]*<)
dans le script ci-avant mais ça n'a pas marché, ni en enlevant / /g ni
en y mettant des guillemets.



Pourant chez moi :

function apostrophe(){
var b = document.getElementsByTagName('BODY')[0],
d = b.innerHTML;
b.innerHTML = d.replace(/'(?=[^>]*<)/g,'’');
}

fonctionne très bien !



Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Avatar
Une Bévue
Le 11/06/2015 13:36, SAM a écrit :

Essaie :
<http://stephane.moriaux.pagesperso-orange.fr/truc/innerHTML_danger.fr>



immédiat
Avatar
fra-PasDeSp
SAM wrote:

function apostrophe(){
var b = document.getElementsByTagName('BODY')[0],
d = b.innerHTML;
b.innerHTML = d.replace(/'(?=[^>]*<)/g,''');



Oui, ça marche ! (je ne sais pas ce que j'ai raté)
--
Fra
Avatar
fra-PasDeSp
Olivier Miakinen <om+ wrote:

Autrement dit, on traite tout ce qui se trouve entre > et < et rien
de ce qui se trouve entre < et >



Et si j'ai :

<style>
html {
color:'black';
font-family: 'Comic Sans MS';
}
.post-it:before {content: '';}
</style>

il va me le pourrir non ?

L'autre était pas mieux du coup ?
--
Fra
2 3 4 5 6