Ошибка синтаксиса PHP - PullRequest
0 голосов
/ 02 июня 2009

Я пытаюсь выяснить, почему я получаю эту ошибку

"Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/idgcca/public_html/web-design-samples-testing.php on line 64"


echo ' 
<div style="float:left; width: 180px; margin: 20px 0px 10px 0px;"><a rel="lightbox[web]" title="'. $post->title .'" onmousedown="this.title='<a target=\'_blank/\' href=\'http:www.google.ca/\'>Google</a>';" onmouseout="this.title='';" href="'. $post->url . '">

<img src="' . $post->thumb . '" border="0"/></a> <div class="design-sample-txt">'. $post->author.'</div></div>

';

Я новичок в PHP, просто пытаюсь понять это сам, но моя голова поворачивается. Помощь была бы очень признательна ...

Ответы [ 7 ]

4 голосов
/ 02 июня 2009

вот ваша проблема:

this.title='<

Вы должны избежать этой цитаты. и тот, что при закрытии тега a тоже. как это:

echo '<div style="float:left; width: 180px; margin: 20px 0px 10px 0px;">
    <a rel="lightbox[web]" title="'. $post->title .'"
       onmousedown="this.title=\'<a target=\'_blank/\' href=\'http:www.google.ca/\'>Google</a>\';"
       onmouseout="this.title=\'\';" href="'. $post->url . '">    
    <img src="' . $post->thumb . '" border="0"/></a>
    <div class="design-sample-txt">'. $post->author.'</div>
</div>';
1 голос
/ 02 июня 2009

Вам нужно экранировать одинарные кавычки в строке одинарных кавычек.

echo '<div style="float:left; width: 180px; margin: 20px 0px 10px 0px;"><a rel="lightbox[web]" title="'. $post->title .'" onmousedown="this.title=\'<a target=\'_blank/\' href=\'http:www.google.ca/\'>Google</a>\';" onmouseout="this.title=\'\';" href="'. $post->url . '">';
1 голос
/ 02 июня 2009

В этой строке есть неопределенная строка. Тебе следует избегать кавычек с такой косой чертой, как эта \ "

echo "

0 голосов
/ 02 июня 2009

Вы должны использовать htmlspecialchars для этих значений атрибута:

function html($str, $charset=null) {
    if (!is_null($charset)) {
        return htmlspecialchars($str, ENT_QUOTES, $charset);
    } else {
        return htmlspecialchars($str, ENT_QUOTES);
    }
}

echo '
    <div style="float:left; width: 180px; margin: 20px 0px 10px 0px;">
        <a rel="lightbox[web]"
           title="' . html($post->title) . '"
           onmousedown="' . html('this.title=\'<a target="_blank" href="http://www.google.ca/">Google</a>\'') . '"
           onmouseout="' . html('this.title=""') . '"
           href="' . html($post->url) . '">
            <img src="' . html($post->thumb) . '" border="0"/></a>
        <div class="design-sample-txt">' . html($post->author) . '</div>
    </div>
';
0 голосов
/ 02 июня 2009

Вы получили ответ от SilentGhost.

Я бы использовал HEREDOC для таких вещей.

0 голосов
/ 02 июня 2009

Предполагая, что вы вставили код точно, ошибка first находится в самом начале, когда вы заканчиваете первую цитату. Ожидается, что читать:

echo ' title .';

Две кавычки рядом друг с другом не имеют никакого смысла.

0 голосов
/ 02 июня 2009

Я бы посоветовал вам разбить ваш код на несколько строк для удобства чтения.

Это поможет отладить такую ​​строку.

Взгляните на оператор эха примеры

Чтобы ответить на ваш вопрос, в вашем коде неправильно использованы некоторые цитаты. Вам нужно сбежать от них.

    echo '<div style="float:left; width: 180px; margin: 20px 0px 10px 0px;">
<a rel="lightbox[web]" title="'. $post->title .'" onmousedown="this.title=\'<a 
target=\'_blank/\' href=\'http:www.google.ca/\'>Google</a>\';" 
onmouseout="this.title=\'\';" href="'. $post->url . '"><img src="' . $post->thumb . '" 
border="0"/></a> <div class="design-sample-txt">'. $post->author.'</div></div>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...