Problème REGEX particulière

ViPHP
ViPHP | 5462 Messages

08 nov. 2010, 17:46

pour en faire quoi apres ?
pour parser du HTML on utilise DOMDocument

Eléphanteau du PHP | 10 Messages

08 nov. 2010, 17:56

Je vais être plus précis.

Actuellement, j'utilise cela pour faire des remplacements :
$remplacement1 = '#[^<>\(="\)](' . preg_quote($donnees2['nom'], '#') . ')#i';
$donnees = preg_replace($remplacement1, ' <a href="../donjons/' . $donnees2['nom_sans_caract_speciaux'] . '.htm">\\1</a>', $donnees );
Mais c'est vraiment pas fiable, y'a plein de problèmes. Ce que je voudrai, c'est que le remplacement ne se fasse pas s'il s'agit de quelque chose qui est déjà dans un lien, ou dans du HTML

Eléphant du PHP | 275 Messages

08 nov. 2010, 19:19

Effectivement, le DOM c'est pas adapté.

Pour un lexique on avait fait la chose en deux étapes, avec un premier preg qui matche les zones hors tag :
$content = preg_replace_callback('/(^|>)([^<]*)/', array(&$this, 'parseContent'), $content);

ViPHP
ViPHP | 5462 Messages

08 nov. 2010, 19:32

Je vais être plus précis.

Actuellement, j'utilise cela pour faire des remplacements :
$remplacement1 = '#[^<>\(="\)](' . preg_quote($donnees2['nom'], '#') . ')#i';
$donnees = preg_replace($remplacement1, ' <a href="../donjons/' . $donnees2['nom_sans_caract_speciaux'] . '.htm">\\1</a>', $donnees );
Mais c'est vraiment pas fiable, y'a plein de problèmes. Ce que je voudrai, c'est que le remplacement ne se fasse pas s'il s'agit de quelque chose qui est déjà dans un lien, ou dans du HTML
quand tu dis dans du html c'est collé au texte ou pas ?

si je recherche "bonjour"

<p>bonjour</p>
<p>boujour machin</p>
bonjour<p>machin</p>

laquel est valide la dedans ?
Modifié en dernier par stealth35 le 08 nov. 2010, 19:35, modifié 1 fois.

Eléphanteau du PHP | 10 Messages

08 nov. 2010, 19:33

Et si tu adaptes avec mon ancien code, ça donne quoi ? Il y a plein de fonctions que je ne connais pas :/

Eléphant du PHP | 275 Messages

08 nov. 2010, 23:08

@stealth35: a priori, tous
@7804j : RTFM ?

ViPHP
ViPHP | 5462 Messages

08 nov. 2010, 23:23

@stealth35: a priori, tous
c'est le "ou dans du HTML" qui me perturbe moi, dans un lien ok mais dans d'autre balise...

Eléphant du PHP | 275 Messages

09 nov. 2010, 09:29

Ben en fait c'est "n'importe ou dans du html sauf dans un lien" vu que c'est pour faire des liens sur des mots (une sorte de lexique quoi)

Mais c'est sûr que c'est pas évident.

ViPHP
ViPHP | 4039 Messages

09 nov. 2010, 10:29

En fait, j'aurai une autre question concernant les REGEX.
Autre question, autre sujet :wink:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 10 Messages

09 nov. 2010, 17:26

Bon, ré-expliquons les chose d'une autre manière.

C'est toujours le même sujet, mais j'ai besoin d'une autre REGEX. Je ne fais donc pas d'autre topic pour cela.

Sur mon site, actuellement, j'ai un article qui s'appelle "Nid du Kwakwa". J'aimerai donc que toutes les occurrences de tous les articles du site où on trouve "Nid du kwakwa" se transforment en lien : "<a href="../donjons/nid-du-kwakwa.htm">Nid du Kwakwa</a>".
Mais si je met une image comme ceci : "<img src="../image.png" alt="Nid du Kwakwa">", l'image va se transformer en lien (<img src="../image.png" alt="<a href="../donjons/nid-du-kwakwa.htm">Nid du Kwakwa</a>">), ou si j'écris un article en mettant déjà des lien moi même, et que j'applique la fonction, cela va donner un lien dans un lien (<a href="../donjons/nid-du-kwakwa.htm"><a href="../donjons/nid-du-kwakwa.htm">Nid du Kwakwa</a></a>).

Il me faudrait donc quelque chose qui permette d'éviter cela.