probleme classique de forum : pros des regexp demandés! [php] - Programmation
Marsh Posté le 19-11-2001 à 18:22:19
doit y a voir moyen, ici ils le font, non?
lalalalalalalalalalalalalalalalalalalalalalalalala
lalalalalalalalalalalalalalalalalalalalalalalalala
lalalalalalalalalalalalalalalalalalalalalalalalala
lalalalalalalalalalalalalalalalalalalalalalalalala
lalalalalalalalalalalalalalalalalalalalalalalalala
lalalalalalalalalalalalalalalalalalalalalalalalala
lalalalalalalalalalalalalalalalalalalalalalalalala
lalalalalalalalalalalalalalalalalalalalalalalalala
lalalalalalalalalalalalalalalalalalalalalalalalala
lalalalalalalalalalalalalalalalalalalalalalalalala
lalalalalalalalalalalalalalalalalalalalalalalalala
lalalalalalalalalalalalalalalalalalalalalalalalala
oui
[edtdd]--Message édité par sisicaivrai--[/edtdd]
Marsh Posté le 19-11-2001 à 18:24:40
sous ie, tu peux rajouter dans le style de la table word-break: break-all; qui fera le break automatiquement.
sinon en CSS2 y'a table-layout: fixed qui, associé à une table ayant une largeur spécifiée (width='600' par ex) gardera cette largeur quelles que soient les longueurs des mots.
tu peux combiner les deux.
[edtdd]--Message édité par youdontcare--[/edtdd]
Marsh Posté le 20-11-2001 à 15:24:36
et y aurait pas un truc pour que ça coupe pas les mots qui sont en bout de ligne mais ki sont assez court kan même hein??
je sais pas si c comprehensible tout ça
Marsh Posté le 20-11-2001 à 15:42:50
avec une expression régulière tu ajoute un espace (ou un <br> ) si jamais plus de X caractère se suivent sans trou.
$Texte = eregi_replace("([a-z0-9]{40})","\\1<br>",$Texte) ;
ça marche pas trop mal..
Marsh Posté le 22-11-2001 à 19:17:30
Sh@rdar a écrit a écrit : avec une expression régulière tu ajoute un espace (ou un <br> ) si jamais plus de X caractère se suivent sans trou. $Texte = eregi_replace("([a-z0-9]{40})","\\1<br>",$Texte) ; ça marche pas trop mal.. |
c bien, mais ca ne prend pas les special chars... comment faire dans l'autre sens (je suis pas loin en regexp)
cad remplacer une suite de 40 * TOUT sauf espace ?
[^ ] ??
[edtdd]--Message édité par sisicaivrai--[/edtdd]
Marsh Posté le 22-11-2001 à 19:26:28
$texte = eregi_replace("([^ ]{50})","\\1<br>",$texte);
ca marche nickel mais j'ai du changer d'autres expressions régulières que je faisais...
[edtdd]--Message édité par sisicaivrai--[/edtdd]
Marsh Posté le 22-11-2001 à 19:55:33
... avec ca comment faire pour pas qu'il remplace les http:// , ftp:// et <img src..
test:
http://aaaaaaaaaaaaaaaaaaaaaaaaaaa [...] aaaaaaaaaa
ah bah vi, ca marche
c sans solution ce probleme
[edtdd]--Message édité par sisicaivrai--[/edtdd]
Marsh Posté le 22-11-2001 à 20:02:42
tiens chui gentil je te donne ceux de mon forum
$texte = preg_replace("/\[b\](.*?)\[\/b\]/si", "<B>\\1</B>", $texte);
$texte = preg_replace("/\[i\](.*?)\[\/i\]/si", "<I>\\1</I>", $texte);
$texte = preg_replace("/\[img\](.*?)\[\/img\]/si", "<IMG SRC=\"\\1\" BORDER=\"0\">", $texte);
$texte = preg_replace("/\[url\](.*?)\[\/url\]/si", "<a href=\"\\1\" target=\"_blank\" class=titre>\\1</a>", $texte);
Marsh Posté le 22-11-2001 à 20:07:17
par contre moi la cassure des longs mots me casse aussi les posts normaux ...
Marsh Posté le 22-11-2001 à 20:28:41
skylight a écrit a écrit : tiens chui gentil je te donne ceux de mon forum $texte = preg_replace("/\[b\](.*?)\[\/b\]/si", "<B>\\1</B>", $texte); $texte = preg_replace("/\[i\](.*?)\[\/i\]/si", "<I>\\1</I>", $texte); $texte = preg_replace("/\[img\](.*?)\[\/img\]/si", "<IMG SRC=\"\\1\" BORDER=\"0\">", $texte); $texte = preg_replace("/\[url\](.*?)\[\/url\]/si", "<a href=\"\\1\" target=\"_blank\" class=titre>\\1</a>", $texte); |
mais la cassure la dedans???
les http, ftp, img, soulignes, gras, italiques j'ai déjà
[edtdd]--Message édité par sisicaivrai--[/edtdd]
Marsh Posté le 22-11-2001 à 20:42:02
- string ereg_replace (string pattern, string replacement, string string)
ereg_replace() effectue une recherche par expression régulière dans la chaîne string en recherchant les occurrences de pattern, puis les remplace par la chaîne replacement.
-mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit])
preg_replace() analyse subject pour trouver l'expression pattern et remplace les résultats par replacement.
preg_replace n'est donc pas une fonction par expression régulière "au sens 1er du terme"
mais chais pas si pour les utilisateurs ca change bcp...
[edtdd]--Message édité par sisicaivrai--[/edtdd]
Marsh Posté le 22-11-2001 à 21:02:10
Waouw, vous pouvez pas savoir comment je suis content! grace a vous je viens de découvrir qu'on peux utiliser les expressions régulières Perl sous php et pas se contenter de cette merde de POSIX. Ca va grandement me facilité la tache
Marsh Posté le 22-11-2001 à 21:06:21
gizmo a écrit a écrit : Waouw, vous pouvez pas savoir comment je suis content! grace a vous je viens de découvrir qu'on peux utiliser les expressions régulières Perl sous php et pas se contenter de cette merde de POSIX. Ca va grandement me facilité la tache |
c'était avec plaisir
un dernier pour la route:
http://aaaaaaaaaaaaaaaaaaaaaaaaaaa [...] aaaaaaaaaa
Marsh Posté le 22-11-2001 à 21:19:18
par contre j'ai quand même une question, skykigth, il sert a quoi le "s" dans /si ? le i je connais, comme le e ou le g, mais le s j'ai jamais vu.
Marsh Posté le 22-11-2001 à 21:53:12
ca convertit le html en texte
http://www.php.net/manual/fr/function.preg-replace.php
Marsh Posté le 22-11-2001 à 22:15:13
non, j'ai trouvé, c'est le s que je mettais d'habitude au début, c'est pour considerer le texte comme une seule ligne et forcer le "." a être n'importe quel char. mais je savais pas qu'on pouvait le mettre en fin d'expression.
Marsh Posté le 22-11-2001 à 22:16:42
j'ai une question:
j'ai un char avec du htmlentities dedans, si je fais un echo, c ok, mais si j'envoie un mail avec le texte dedans -> affichage des codes. Comment l'en empecher?
Marsh Posté le 22-11-2001 à 22:48:48
sisicaivrai a écrit a écrit : j'ai une question: j'ai un char avec du htmlentities dedans, si je fais un echo, c ok, mais si j'envoie un mail avec le texte dedans -> affichage des codes. Comment l'en empecher? |
pardon ?
ou sinon tu créé une 2° variable auquel tu fais un coup de htmlspecialchar() ... ?
sinon g pa compris la question
Marsh Posté le 22-11-2001 à 22:50:06
par contre g un pb avec mon forum
http://e-sky.dyndns.org/forum/foru [...] nfig=forum
regardez, a un moment je poste un lien. et c'est pas le bon texte qui est affiché.. suffit de cliquer sur "EDIT" pour voir le vrai lien que g mis
je comprend pas sur ce coup
pourtant j'utilise les expr reg que g cité ci dessus.
Marsh Posté le 22-11-2001 à 22:55:07
à cause de ça : cla<br>ss=titre> c'est de ma faut ma regexp déconne... faut perfectionner ce truc un peu sommaire (j'ai lancé ça comme ça moi )
Marsh Posté le 22-11-2001 à 22:58:08
heu skylight tu pourrais me sortir ton code de regexp complet ?
à mon avis y a un prob au niveau de l'ordre (d'abord la cassure puis ensuite la tranformation en liens)
sinon faudrait modifier le bazar de manière à couper uniquement si y a pas de http:// ou www. devant (pour les url longues)
Marsh Posté le 22-11-2001 à 23:00:19
skylight a écrit a écrit : pardon ? ou sinon tu créé une 2° variable auquel tu fais un coup de htmlspecialchar() ... ? sinon g pa compris la question |
exemple:
j'ai une var $titre avec dedans écrit "spécial"
si je fais un écho-> ok
si j'envoie un mail avec $titre dedans -> spécial
Marsh Posté le 22-11-2001 à 23:21:44
gizmo a écrit a écrit : essaye en indiquant que le mail est au format html |
ca marche
[edtdd]--Message édité par sisicaivrai--[/edtdd]
Marsh Posté le 23-11-2001 à 00:00:10
tant mieux.
Sinon j'ai une question: c'est moi qui fait une couille dans ma regexp ou bien preg_replace ne comprend pas l'attribut \b ?
Parce que c'est la seule chose qui me résiste encore
Marsh Posté le 23-11-2001 à 17:03:23
Sh@rdar a écrit a écrit : heu skylight tu pourrais me sortir ton code de regexp complet ? à mon avis y a un prob au niveau de l'ordre (d'abord la cassure puis ensuite la tranformation en liens) sinon faudrait modifier le bazar de manière à couper uniquement si y a pas de http:// ou www. devant (pour les url longues) |
ds l'ordre, (page forum2.php)
Code :
|
[edtdd]--Message édité par skylight--[/edtdd]
Marsh Posté le 23-11-2001 à 17:12:36
ok tu devrais esasyer comme j'ai indiqué de mettre la cassure en first, sinon avec l'url plus le <a href...> ça fait vite 40-50 caractères et ça casse en plein milieu du lien..
gizmo j'en ai aucune idée j'utilise pas les regexp perl...
Marsh Posté le 23-11-2001 à 17:16:25
mattez aussi le post en dessous du lien .. j'ai mis du texte normal, le pb c'est que ca fait trop zarb ds le tablo, je pige pa pkoi
Marsh Posté le 23-11-2001 à 17:16:45
gizmo a écrit a écrit : tant mieux. Sinon j'ai une question: c'est moi qui fait une couille dans ma regexp ou bien preg_replace ne comprend pas l'attribut \b ? Parce que c'est la seule chose qui me résiste encore |
il est censé faire koi ?
Marsh Posté le 23-11-2001 à 17:25:06
c'est censé limité la recherche aux mots commencant ou finissant exactement par l'expression. Mais c'est pas grave, j'ai trouvé la solution: je met un blanc au début de mon message et alors mes trucs marchent dans 95% des cas. (pour les autres connerie, je m'en fous )
Si vous vouler, je peux vous montrer mes regexp.
Marsh Posté le 23-11-2001 à 17:39:15
pkoi pas, j'ai montré les miens.
apparement le bug du texte qui ne colle pas a pu se résoudre...
Marsh Posté le 23-11-2001 à 17:45:35
Code :
|
[edtdd]--Message édité par gizmo--[/edtdd]
Marsh Posté le 23-11-2001 à 17:50:50
ca m'a l'air propre tout ca...
dit moi gizmo, t'utilise une fonction
mais en php, il n'y a pas main() {}... donc comment faire des fonctions ?
car si je fais une fonction, le php va quand meme lire et executer la fonction, meme si je lui dis pas de la lire ?
Marsh Posté le 23-11-2001 à 17:53:39
ya un bug dans tes ereg ..
tape un long mot de <<<<<<<<<<<<<<<<>>>>>>>>>>>>><<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>><
ca le coupe pas.. j'essaie de voir pourquoi ...
Marsh Posté le 23-11-2001 à 17:54:38
non, les fonctions sont bien décrites par
function nom_de_la_fonction (arg1,arg2,...)
{
retrun valeur (optionel)
}
et tu les appelles comme des fonctions classiques, autrement elles sont ignorées.
Marsh Posté le 19-11-2001 à 18:16:26
comment faire pour découper un message pour ne pas foutre en l'air toute la mise en page des tableaux, quand l'auteur omet de mettre des espaces (le salaud )
y a rien d'autre que de compter et insérer des sauts de lignes tous les X caractères?
[edtdd]--Message édité par sisicaivrai--[/edtdd]