Что не так с этим PHP? - PullRequest
       18

Что не так с этим PHP?

2 голосов
/ 16 мая 2011

Я получаю эту синтаксическую ошибку: Ошибка разбора: синтаксическая ошибка, неожиданный T_STRING, ожидание ',' или ';'в строке 18 на этой странице .

Я думаю, что это «первая опубликованная» строка, которая может быть проблемой.Есть предложения?

Спасибо - Тара

<?php 
    $days = round((date('U') - get_the_time('U')) / (60*60*24));
    if ($days==0) {
        echo "Published today |"; 
    }
    elseif ($days==1) {
        echo "Published yesterday |"; 
    }
    else {
        echo "First published " the_time('F - j - Y') " |";
    } 
?>
&nbsp;Last updated at <?php the_time('g:i a'); ?> on <?php the_time('l, F jS, Y') ?> by <?php the_author(); ?> 

Ответы [ 5 ]

6 голосов
/ 16 мая 2011

Ваша проблема заключается в следующем:

echo "First published " the_time('F - j - Y') " |";

Все остальные ответы, которые предлагают объединение, являются неправильными.the_time () в WordPress выдает эхо, поэтому вам нужно разделить это на несколько вызовов:

echo "First published ";
the_time('F - j - Y');
echo " |";

В качестве альтернативы, объединить, но используя get_the_time ():

echo "First published " . get_the_time('F - j - Y') . " |";
1 голос
/ 16 мая 2011

Если это действительно код из Wordpress, и the_time () повторяется сам по себе, да, тогда вам нужно поместить эхо в отдельные строки:

echo "First string";
the_time();
echo "second string";

Sidenote:

Когдасинтаксический анализатор жалуется, что вы пропустили точку с запятой (;), я нахожу, что есть две очень распространенные причины:

1: ошибка, у вас есть здесь;парсер находит и недопустимый символ в строке.Если вызов функции выполняется сразу после строкового литерала (без конца строки, например, точки с запятой или оператора между ними), то синтаксический анализатор выдаст ошибку, и анализатор будет догадываться, что, возможно, вы забыли завершить строкуздесь.

2: Вы действительно забыли завершить строку.Но тогда синтаксический анализатор будет жаловаться на строку, в которой он находит недопустимый символ, и обычно вам нужно добавить точку с запятой в конце строки выше:

myFunction() // <-- Oops, missing a semi-colon!
myOtherFunction();
1 голос
/ 16 мая 2011

вместо

echo "First published " the_time('F - j - Y') " |";

Попробуйте

echo "First published " . get_the_time('F - j - Y') . " |";

Используя get_the_time () вместо the_time () , вы можете повторить это сцепление с остальной частью вашей строки вместо того, чтобы разбивать ее на несколько строк. В тех случаях, когда функции Wordpress, такие как the_time (), отражают свои результаты, часто существует версия «get», которая возвращает значение без его повторения.

0 голосов
/ 16 мая 2011

Есть два способа исправить это.

Первый - это то же самое, что и все остальные: конкатенация строк:

echo "First published " . the_time('F - j - Y') . " |";

Другой способ - добавить запятые между каждой строкой. Это работает потому, что echo принимает несколько аргументов.

echo "First published ", the_time('F - j - Y'), " |";

Я не знаю, быстрее ли это, чем конкатенация строк.

0 голосов
/ 16 мая 2011

Вам необходимо использовать оператор concat (точка).

echo "First published " . the_time('F - j - Y') . " |";
...