url tronqué regexe

Eléphant du PHP | 119 Messages

11 janv. 2011, 11:55

bonjour,
sur mon site quand je place un statut il s'affiche sur deux partie, une en "haut" avec le statut et en dessous le "mur", j'ai placer un preg_replace,
dans la partie du haut le lien est cliquable et dans la partie du bas l'url se decoupe et n'est pas cliquable.

en recuperant le code source je voit plusieurs erreurs mais je n'arrive pas a les identifier a savoir si elle proviennent du php, des templates ou des js.
<span class="piece_news_content"><a&nbsp;href="http: google.fr="" target="_blank">http://google.f<br>r</a&nbsp;href="http:></span>
mon preg_replace
$content = preg_replace('`http://[a-z0-9._,/?!&=#-]+`i', '<a href="$0"target="_blank">$0</a>', $content);
tout me semble correct, il n'y a que dans cette deuxieme partie que ca ne marche pas
voir image :

Image
Modifié en dernier par olivxii le 11 janv. 2011, 16:08, modifié 1 fois.

Eléphant du PHP | 119 Messages

11 janv. 2011, 15:55

j'ai beau fouiller je ne trouve pas, par contre j'ai trouvé un morceau de script js ou il y a les dernieres news ... peut etre le soucis vient de la!!

Code : Tout sélectionner

// Recuperation de l'id de la derniere news publiee last_id = last_news_id; var url = web_adress+ajax_url+"action=get_news&last_news_id="+last_id+"&appel_number="+appel_number+"&filter="+filter; new Ajax.Request(url, { method: 'post', onSuccess: function(transport) { var retour=transport.responseText; var json=eval('(' + retour + ')'); if(json.answer == 'nok'){ affiche(translate('error_text'),'ok'); }else{ //On traite la réponse var html = json.html; //document.getElementById('main_wall').innerHTML = html; //document.getElementById('nb').innerHTML = json.nb_notif; if(json.news != 0){ var exist_html = document.getElementById('main_wall').innerHTML; var html_ok = html + exist_html; document.getElementById('main_wall').innerHTML = html_ok; if (last_news_id != 0) { var div = "main_wall_" + appel_number; new Effect.BlindDown(div); new Effect.Highlight(div, { startcolor: '#e6e6e6',endcolor: '#ffffff',duration:3.0 }); } //maj_cols_height(); } appel_number++; last_news_id = json.last_id; if ((first_id_news == 0) || (json.first_id != 0) && (json.first_id < first_id_news)) first_id_news = json.first_id; } } }); } function maj_last_statute() { var url = web_adress+ajax_url+"action=maj_last_statute"; new Ajax.Request(url, {onSuccess: function(transport) { var retour=transport.responseText; var json=eval('(' + retour + ')'); if (json.answer == "ok") { document.getElementById('actual_statute').innerHTML = json.html; } else { affiche(translate('error_text'),'ok'); } } } ); } function maj_last_statute_profil(user) { var url = web_adress+ajax_url+"action=maj_last_statute_profil&user="+user; new Ajax.Request(url, {onSuccess: function(transport) { var retour=transport.responseText; var json=eval('(' + retour + ')'); if (json.answer == "ok") { document.getElementById('actual_statute2').innerHTML = json.html; } else { affiche(translate('error_text'),'ok'); } } } ); } function maj_four_statute_profil(user) { var url = web_adress+ajax_url+"action=maj_four_status_profil&user="+user; new Ajax.Request(url, {onSuccess: function(transport) { var retour=transport.responseText; var json=eval('(' + retour + ')'); if (json.answer == "ok") { //A REMPLIR for(var i=0; i<4; i++){ var nb = i+1; document.getElementById('last_'+nb+'_photo').innerHTML = json.user_photo; document.getElementById('last_'+nb+'_cont').innerHTML = json.status[i]; document.getElementById('last_'+nb+'_time').style.display = json.displays[i]; document.getElementById('last_'+nb+'_time_cont').innerHTML = json.times[i]; } } else { affiche(translate('error_text'),'ok'); } } } ); }

Eléphant du PHP | 119 Messages

11 janv. 2011, 16:06

en changeant le preg_replace j'ai plus mon lien de coupé par contre toujours pas cliquable dans la deuxieme partie 'mur'.
$content = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\">\\0</a>", $content);
par contre toujours cette anomalie d'espace ...
<span class="piece_news_content"><a&nbsp;href="http: google.fr="">http://google.fr&nbsp;</a&nbsp;href="http:></span>
dans le premier a href on remarque qu'il manque //
ensuite j'ai ma fermeture </a> qui se melange avec un href et http .....
ca devient vraiment bizarre j'ai vraiment l'impression que les regex ne passe pas du tout .. ou du moins sur la partie du bas car dans la partie statut tout se deroule bien..

merci de votre aide et de vos idées.

ViPHP
ViPHP | 5462 Messages

11 janv. 2011, 16:13

ils sortent d'où les &nbsp; ?

Eléphant du PHP | 119 Messages

11 janv. 2011, 16:18

je ne sais pas justement ... c'est quand je genere le code source de la page .....

sinon mon regex est correct
$content = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\">\\0</a>", $content);

ViPHP
ViPHP | 5462 Messages

11 janv. 2011, 16:23

après t'en fait quoi de $content ?

Eléphant du PHP | 119 Messages

12 janv. 2011, 21:19

$content est le url qui' est rentrée pour etre transformée en lien ..

Eléphant du PHP | 119 Messages

17 janv. 2011, 13:54

case 'MAIN' : {
							switch ($type) {
								case 'STATUTE' : {
									$ins_req = "INSERT INTO `".$this->config['bdd_table']
										."statutes`(`user_id`,`text`,`date`) 
										VALUES ('".$owner_id."',' ".$content."','".$date."')";
								      $content = preg_replace('`http://[a-z0-9._,/?!&=#-]+`i', '<a href="$0" >$0</a>', $content);                                       
									}
									
									break;									
								} 
							}