{"id":1431,"date":"2011-08-22T09:10:35","date_gmt":"2011-08-22T07:10:35","guid":{"rendered":"https:\/\/www.creativejuiz.fr\/blog\/?p=1431"},"modified":"2015-01-18T16:25:31","modified_gmt":"2015-01-18T15:25:31","slug":"php-parse-error-syntax-error-unexpected-end-in","status":"publish","type":"post","link":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/php-parse-error-syntax-error-unexpected-end-in","title":{"rendered":"[PHP] Parse error: syntax error, unexpected $end in"},"content":{"rendered":"<p>Il est quasiment obligatoire que vous ayez d\u00e9j\u00e0 rencontr\u00e9 cette erreur et peut-\u00eatre tombez-vous sur cet article apr\u00e8s une recherche d&rsquo;explication sur le net car vous venez de la rencontrer.<br \/>\nCette erreur est assez courante lorsque l&rsquo;on d\u00e9bute, mais elle arrive aussi lorsqu&rsquo;on a de mauvaises<!--more--> habitudes de pr\u00e9sentation du code, ou lorsque l&rsquo;on code depuis plus de 4h sans pause \ud83d\ude00<\/p>\n<p class=\"center\"><img decoding=\"async\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2011\/08\/error-php.png\" alt=\"\" title=\"\" width=\"414\" height=\"55\" class=\"aligncenter size-full wp-image-1434\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2011\/08\/error-php.png 414w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2011\/08\/error-php-300x39.png 300w\" sizes=\"(max-width: 414px) 100vw, 414px\" \/><\/p>\n<h2>Signification<\/h2>\n<p>Cette erreur est plut\u00f4t simple \u00e0 comprendre, mais moins \u00e0 corriger lorsque votre code est tr\u00e8s long.<br \/>\nElle signifie : <cite>\u00ab\u00a0Erreur d&rsquo;analyse syntaxique : erreur de syntaxe, fin de code inattendue\u00a0\u00bb<\/cite>.<br \/>\nAutrement dit, quelque chose ne se termine pas correctement dans votre code.<\/p>\n<h2>Pourquoi ?<\/h2>\n<p>Il arrive qu&rsquo;un caract\u00e8re \u00ab\u00a0saute\u00a0\u00bb dans notre code, par un mauvais copier\/coller, une touche rebelle du clavier, ou un simple oubli lors de la r\u00e9\u00e9criture d&rsquo;une portion, par exemple.<br \/>\nVoici ce qui peut provoquer cette erreur :<\/p>\n<ul>\n<li>vous oubliez de fermer une parenth\u00e8se : du coup PHP analyse la suite du code comme appartenant au contenu entre parenth\u00e8ses jusqu&rsquo;\u00e0 ce qu&rsquo;il trouve la fin ;<\/li>\n<li>vous oubliez de fermer une accolade : PHP estime donc que tout le code qui suit fait partie du m\u00eame bloc jusqu&rsquo;\u00e0 la fin du document ;<\/li>\n<li>vous oubliez de fermer un guillemet : PHP va chercher le prochain guillemet qui ferme la cha\u00eene de caract\u00e8res, guillemet qu&rsquo;il ne trouvera pas ;<\/li>\n<\/ul>\n<h2>D\u00e9bogue<\/h2>\n<p>PHP vous donne gentiment la derni\u00e8re ligne de votre document en guise d&rsquo;indice. C&rsquo;est normal puisqu&rsquo;il parcours tout votre document \u00e0 la recherche du caract\u00e8re manquant.<br \/>\nLorsque votre script fait une centaine de lignes, le d\u00e9bogue \u00ab\u00a0\u00e0 l\u2019\u0153il nu\u00a0\u00bb suffit bien souvent.<\/p>\n<p>Si ce n&rsquo;est pas le cas, je vous propose une strat\u00e9gie de d\u00e9bogue que j&rsquo;utilise parfois qui consiste \u00e0 compter le nombre de caract\u00e8re fermant et ouvrant.<br \/>\nC&rsquo;est valable pour la parenth\u00e8se et l&rsquo;accolade, pour le guillemet ou l&rsquo;apostrophe (<em lang=\"en\">simple quote<\/em>) il vous faudra v\u00e9rifier que le r\u00e9sultat du compte soit un nombre pair.<\/p>\n<p>Pour cela, votre outil d&rsquo;\u00e9dition peut vous aider. Pour ma part j&rsquo;utilise Notepad++ qui permet de compter le nombre d&rsquo;occurrences d&rsquo;une cha\u00eene dans votre document actif.<br \/>\nFaites <kbd><kbd>CTRL<\/kbd><\/kbd> + <kbd><kbd>F<\/kbd><\/kbd> pour ouvrir le panneau de recherche.<\/p>\n<p class=\"center\"><img decoding=\"async\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2011\/08\/recherche-compter-notepad.png\" alt=\"\" title=\"\" width=\"596\" height=\"364\" class=\"aligncenter size-full wp-image-1432\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2011\/08\/recherche-compter-notepad.png 596w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2011\/08\/recherche-compter-notepad-300x183.png 300w\" sizes=\"(max-width: 596px) 100vw, 596px\" \/><\/p>\n<p>Rentrez le caract\u00e8re recherch\u00e9 dans le champ \u00ab\u00a0Recherche\u00a0\u00bb, et cliquez sur le bouton \u00ab\u00a0Compter\u00a0\u00bb.<br \/>\nUne fen\u00eatre appara\u00eet avec le nombre d&rsquo;occurrences trouv\u00e9es.<\/p>\n<p class=\"center\"><img decoding=\"async\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2011\/08\/compte-caractere-notepad.png\" alt=\"\" title=\"\" width=\"281\" height=\"190\" class=\"aligncenter size-full wp-image-1435\" \/><\/p>\n<p>Si vous souhaitez conserver un historique des comptes, vous pouvez aussi utiliser le bouton \u00ab\u00a0Rechercher dans le document actuel\u00a0\u00bb qui sert \u00e0 la base \u00e0 afficher les lignes du document o\u00f9 le caract\u00e8re recherch\u00e9 appara\u00eet, mais qui fait aussi un compte des occurrences.<\/p>\n<h2>\u00c9viter cette erreur<\/h2>\n<p>Il n&rsquo;y a pas de secret, une bonne pr\u00e9sentation du code est primordiale.<br \/>\nAussi, au lieu d&rsquo;une pr\u00e9sentation de ce type :<\/p>\n<pre class=\"code\"><code class=\"php\">&lt;?php\r\nif($var<=10) {\r\nfor($i=0; $i<$var;$i++) {\r\necho '&lt;span class=\"counter nb'.$i.'\"&gt;'.$i.'&lt;\/span&gt;';\r\n}\r\n}\r\n?&gt;<\/code><\/pre>\n<p>pr\u00e9f\u00e9rez une pr\u00e9sentation indent\u00e9e et a\u00e9r\u00e9e :<\/p>\n<pre class=\"code\"><code class=\"php\">&lt;?php\r\n   if( $var <= 10 )\r\n   {\r\n      for( $i=0 ; $i < $var ; $i++ )\r\n      {\r\n         echo '&lt;span class=\"counter nb' . $i . '\"&gt;' . $i . '&lt;\/span&gt;';\r\n      }\r\n   }\r\n?&gt;<\/code><\/pre>\n<p>Certains logiciels d'\u00e9dition vous permette d'automatiser des t\u00e2ches r\u00e9p\u00e9titives, comme par exemple, avec l'auto-compl\u00e9tion, la fermeture d'une parenth\u00e8se ou d'une accolade lors de son ouverture, ou la cr\u00e9ation de macro pour la syntaxe d'une boucle, etc. Activez-les et abusez-en !<\/p>\n<p>Si vous avez d'autres techniques n'h\u00e9sitez pas \ud83d\ude09<\/p>\n<p>J'esp\u00e8re que cet astuce vous sera utile.<br \/>\nBon code !<\/p>\n<div class=\"sources\">\n<h2>Sources et liens utiles<\/h2>\n<ul>\n<li><a href=\"http:\/\/www.commentcamarche.net\/faq\/11015-parse-error-syntax-error-unexpected-end\">Autre article \u00e0 ce sujet sur <abbr title=\"Comment \u00c7a Marche\">C\u00c7M<\/abbr><\/a><\/li>\n<li><a href=\"http:\/\/php.net\/manual\/fr\/index.php\">Manuel PHP<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Il est quasiment obligatoire que vous ayez d\u00e9j\u00e0 rencontr\u00e9 cette erreur et peut-\u00eatre tombez-vous sur cet article apr\u00e8s une recherche d&rsquo;explication sur le net car vous venez de la rencontrer. Cette erreur est assez courante lorsque l&rsquo;on d\u00e9bute, mais elle arrive aussi lorsqu&rsquo;on a de mauvaises<\/p>\n","protected":false},"author":4,"featured_media":1438,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_bluesky_dont_syndicate":"","_bluesky_syndication_accounts":"","_bluesky_syndication_text":"","footnotes":""},"categories":[50,9],"tags":[228,379,380,233],"coauthors":[597],"class_list":["post-1431","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ressources-telechargements","category-tutoriels","tag-astuce","tag-erreur","tag-error","tag-php"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/1431","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/comments?post=1431"}],"version-history":[{"count":0,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/1431\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media\/1438"}],"wp:attachment":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media?parent=1431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/categories?post=1431"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/tags?post=1431"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/coauthors?post=1431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}