Problème apostrophe "&#039"

Fermé
Ily - 20 sept. 2013 à 01:41
reverb94 Messages postés 106 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 7 janvier 2014 - 20 sept. 2013 à 19:14
Bonjour,

Je souhaiterais sollicité votre aide concernant un soucis d'apostrophe qui se transforme en "'" après avoir été chercher l'info dans la BDD ou l'apostrophe est correcte.

le soucis viens je pense de ce fichier :
<?php

class LiquidPro_SimpleForms_Destination_Thread extends LiquidPro_SimpleForms_Destination_Abstract
{
protected $_thread;

public function save()
{
$forumId = $this->_options['thread_forum_node_id']['option_value'];
$forum = $this->_getForumModel()->getForumById($forumId);

$userId = $this->_options['thread_post_by_user_id']['option_value'] != '' ? $this->_options['thread_post_by_user_id']['option_value'] : XenForo_Visitor::getUserId();
if (!$userId)
{
$user = array(
'username' => 'Guest',
'user_id' => null
);
}
else
{
$userModel = XenForo_Model::create('XenForo_Model_User');
$user = $userModel->getUserById($userId);
}

$input['title'] = $this->_options['thread_title_template']['option_value'];

if ($this->_options['thread_message_template']['option_value'] == '')
{
$message = '';

foreach ($this->_templateFields AS $field)
{
if ($this->_options['thread_hide_empty_fields']['option_value'] == array() || ($this->_options['thread_hide_empty_fields']['option_value'] !== array() && $field['value'] != ''))
{
$message .= $field['title'] . ':' . PHP_EOL;
if ($field['field_type'] == 'wysiwyg')
{
$message .= '[INDENT="1"]' . $field['value'] . '/INDENT' . PHP_EOL;
}
else
{
$message .= '[INDENT="1"][B]' . $field['value'] . '/B/INDENT' . PHP_EOL;
}
}
}
}
else
{
$message = $this->_options['thread_message_template']['option_value'];
}
$message = XenForo_Helper_String::autoLinkBbCode($message);

$writer = XenForo_DataWriter::create('XenForo_DataWriter_Discussion_Thread');
$writer->set('user_id', $user['user_id']);
$writer->set('username', $user['username']);
$writer->set('title', $input['title']);
$writer->set('node_id', $forumId);
if (!empty($forum['default_prefix_id']))
{
$writer->set('prefix_id', $forum['default_prefix_id']);
}

if ($this->_options['thread_sticky']['option_value'] && $this->_getForumModel()->canStickUnstickThreadInForum($forum, $errorPhraseKey, null, $user))
{
$writer->set('sticky', $this->_options['thread_sticky']['option_value']);
}

$postModel = XenForo_Model::create('XenForo_Model_Post');

$writer->set('discussion_state', $postModel->getPostInsertMessageState(array(), $forum));

$postWriter = $writer->getFirstMessageDw();
$postWriter->set('message', $message);
if ($this->_attachmentHash)
{
$postWriter->setExtraData(XenForo_DataWriter_DiscussionMessage::DATA_ATTACHMENT_HASH, $this->_attachmentHash);
}
$postWriter->setExtraData(XenForo_DataWriter_DiscussionMessage_Post::DATA_FORUM, $forum);

$writer->setExtraData(XenForo_DataWriter_Discussion_Thread::DATA_FORUM, $forum);

$writer->preSave();

if ($this->_options['thread_poll_question']['option_value'] !== '')
{
$pollInput = array();
$pollInput['question'] = $this->_options['thread_poll_question']['option_value'];
$pollInput['multiple'] = $this->_options['thread_poll_multiple']['option_value'];
$pollInput['public_votes'] = $this->_options['thread_poll_public_votes']['option_value'];

$pollWriter = XenForo_DataWriter::create('XenForo_DataWriter_Poll');
$pollWriter->bulkSet(
XenForo_Application::arrayFilterKeys($pollInput, array('question', 'multiple', 'public_votes'))
);

$pollWriter->set('content_type', 'thread');
$pollWriter->set('content_id', 0); // changed before saving
$pollWriter->addResponses($this->_options['thread_poll_choices']['option_value']);
$pollWriter->preSave();
$writer->mergeErrors($pollWriter->getErrors());

$writer->set('discussion_type', 'poll', '', array('setAfterPreSave' => true));
}

$writer->save();

$thread = $writer->getMergedData();

if (isset($pollWriter))
{
$pollWriter->set('content_id', $thread['thread_id'], '', array('setAfterPreSave' => true));
$pollWriter->save();
}

// set the thread
$this->_thread = $thread;

XenForo_Model::create('XenForo_Model_Thread')->markThreadRead($thread, $forum, XenForo_Application::$time);
}

public function redirect()
{
return XenForo_Link::buildPublicLink('threads', $this->_thread);
}

public static function VerifyForumNodeId(array $option, &$value, &$error)
{
$forumModel = XenForo_Model::create('XenForo_Model_Forum');
if (!$forumModel->getForumById($value))
{
$error = new XenForo_Phrase('requested_forum_not_found');
return false;
}

return true;
}

public static function VerifyTitleTemplate(array $option, &$value, &$error)
{
return parent::VerifyTemplate($option, $value, $error);
}

public static function VerifyPostUserId(array $option, &$value, &$error)
{
if ($value != '')
{
$userModel = XenForo_Model::create('XenForo_Model_user');
if (!$userModel->getUserById($value))
{
$error = new XenForo_Phrase('requested_user_not_found');
return false;
}
}

return true;
}

public static function VerifyMessageTemplate(array $option, &$value, &$error)
{
return parent::VerifyTemplate($option, $value, $error);
}

public static function VerifyDestination(array &$options, &$values)
{
$errors = array();

if (isset($values['thread_enabled']) )
{
// check for required
foreach ($options as $optionId => $option)
{
if ($option['required'] && ($values[$optionId] === '' || $values[$optionId] === array()))
{
$errors['destination_options[' . $option['destination_id'] . '][' . $optionId . ']'] = new XenForo_Phrase('please_enter_value_for_all_required_fields');
}
}
}

return $errors;
}

/**
* @return XenForo_Model_Forum
*/
protected function _getForumModel()
{
return XenForo_Model::create('XenForo_Model_Forum');
}
}

Je n'ai aucune idée du pourquoi, ni de ce qu'il faut faire... j'ai lu str replace, ou encore du htmlspecialcars mais je ne sais pas ou l'intégrée :(

Je vous remercie d'avance :)

1 réponse

reverb94 Messages postés 106 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 7 janvier 2014 1
20 sept. 2013 à 19:14
Salut à toi,

Si j'ai bien compris ton problème, lorsque tu souhaite afficher une informations sur ton site, par une variable, dont le texte contient des apostrophe ('), cela te met des & / ou autres ^^.

Il y a plusieurs source qui pourrait créer ce problème,

1- dans ta base de donnée verifie bien que tout est encodé par exemple sous utf8, ( les tables, les champs texte etc...)

2- effectivement, le soucis peut venir directement du code php, pour utiliser stripslashes c'est simple :

stripslashes(htmlspecialchars($data['ta_variable_à_afficher']))

en espérant t'avoir aidé ^^.
0