Je suis assez nouveau à PHP et j'utilise un script qui crée une fonction appelée "mime_mailer" qui me permet essentiellement d'utiliser php pour envoyer des courriels pouvant être conçus avec CSS au lieu d'être simplement un texte simple. .
Pourtant, dans mon script d'enregistrement, j'essaie d'écrire du code qui envoie un courrier électronique CSS, mais je reçois une erreur en disant qu'il y a une erreur de syntaxe. Si quelqu'un pourrait-on s'il vous plaît remplir à ce sujet? P>
if(basename(__FILE__) == basename($_SERVER['PHP_SELF'])) send_404(); // stop http access to this file function mime_mailer($to, $subject, $message, $headers = NULL, $attachments = NULL, $css = NULL) { if(!preg_match('/^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a- z]{2,6})$/', $to)) return FALSE; if(preg_match('/<(html|head|body|div|a|h|p|table|br|img|b|hr|ol|ul|span|pre|i|form)[^>]*[^>]*>/i', $message)) $html = TRUE; if(stristr($message, '<body')) $message = stristr($message, '<body'); $message = delete_local_links($message); if(empty($headers)){ $headers = "MIME-Version: 1.0\n"; }else{ $headers.= "\nMIME-Version: 1.0\n"; } if(empty($html)){ $result = plain_text($message); }elseif(isset($html) and $html == TRUE){ if(!isset($css)) $css = NULL; if(preg_match('/<img[^>]+>/i', $message)){ $result = multipart_related($message, $css); }else{ $result = multipart_alternative($message, $css); } } $result['message'] = delete_non_cid_images($result['message']); if(!empty($attachments)){ $parts = attachments($attachments); array_unshift($parts, implode('', $result)); $result = multipart_mixed($parts); } $headers = $headers.$result['headers']; //print '<pre>'.htmlspecialchars($headers.$result['message']).'</pre>';exit; if(mail($to, $subject, $result['message'], $headers)) return TRUE; return FALSE; } ?>
6 Réponses :
Jetez un coup d'œil au Liste des jetons d'analyseurs . P>
Vous ne devez pas utiliser les onglets ou les espaces avant d'utiliser t_sl code> références à
<<< / code>. p>
fin; code>. Regardez Cet énorme avertissement . P>
J'ai commuté <<< Terminer à << Terminer et se débarrasser des onglets et des espaces avant que j'ai utilisé la fin et que le même message d'erreur s'affiche toujours.
@Lance: Vous devriez changer << fin code> retour à
<<< Fin code>. Vous ne devez supprimer que les onglets et les espaces sur la même ligne que
fin; code>.
Il y a un bogue dans fonction_mime_mailer.php: doit être p> aussi, si vous incluez l'en-tête de la version MIME , alors la fonction comprendra une fois de plus - en avoir effectivement deux d'entre elles. P> p>
a juste eu le même problème.
s'est avéré être contenu sur la même ligne que mon herdeoc d'ouverture p>
faux exemple p> correct Exemple p> espère que cela aide quelqu'un d'autre! p> p>
Il convient de souligner que même un caractère d'espace (qui peut être caché dans votre éditeur) peut causer ce problème. C'est I> un bain de cerveau jusqu'à ce que vous le trouviez.
Quelle version de php utilisez-vous? La syntaxe Nowdoc n'est valide que depuis PHP 5.3.0. Voir le manuel: http: //www.php .NET / Manual / fr / language.types.string.php # langue.types.string.syntax.nowdoc p>
J'ai récemment (en 2017!) Appuyez sur cette erreur et c'était la cause. Ma société d'hébergement Web utilise toujours PHP 5.2.9 (non pris en charge depuis 2014, je pense) et cela jette cette erreur pour un Nowdoc. N'oubliez pas de vérifier la version PHP de votre webhost.
Une note latérale, mais pourrait bien aider quelqu'un: une mauvaise fusion git peut causer cela. Considérez:
function foo <<<<<<< HEAD $bar = 1; <<<<<<< e0f2213bc34d43ef $bar = 2;
Merci, c'est le cas avec moi, mais comment le résoudre? Je ne sais pas quel fichier contient l'erreur
Je suis désolé Shireef que je n'ai pas revu sur ceci ... Career Hop au début de 2020 et un temps chargé de foudre depuis que je m'éloigna de la part de la pile pour la plupart. Si vous avez un système de type UNIX, je suggérerais d'utiliser grep code> ou de trouver de la canalisée à grep ....
Il avait le même problème au même problème, mais le mien était parce que j'avais l'espace à la fin de mon hérécoc sur la ligne supérieure: html; p> Source: http://realtechTalk.com/_syntax_error_unexpued_t_sl_in_php_solution-2109-Articles P> P> P> P> P >
Publiez le message d'erreur indiquant le numéro de ligne et définissez ce numéro de ligne dans le code posté
L'erreur est dans le script d'enregistrement. C'est dans la 6ème ligne. La ligne où la variable de messages $ est définie. Où le <<< fin est ...