syntax error, unexpected T_FUNCTION
-
Eu estou com um problema, meu cliente comprou um tema e fui ativa, só que esá dando essse erro: http://comunicasite.com.br/site-ceo/home/
No código na linha 24 está assim: $content = preg_replace_callback(‘/
- ([ \w\s]+):(.*)<\/li>/im’, function( $matches ){
Alguém sabe como ajustar?
-
Qual a versão do seu PHP? o método certo de utilizar o callback é através da função
create_function
.
Dê uma olhada na referência:
http://php.net/manual/pt_BR/function.preg-replace-callback.phpFunções em modo closure, só são suportadas a partir do PHP 5.3.0. Pode ser uma possibilidade da causa do erro. Vale a pena tentar.
A versão é a mais atual.
O tópico quebrou todo, tenta editar seu primeiro comentário e colocar o código entre acentos craseados para formatar.
O erro pode estar relacionado com algo antes ou após a linha indicada, posta o código completo desse trecho. Pode ser que fique mais claro.
<?php
extract(shortcode_atts(array(
‘icon’ => ”,
‘title’ => ”,
‘el_id’ => ”,
‘el_class’=>’none’,
‘parent’ => ”,
‘expanded’=> ”
), $atts));
?>
<div class=”panel panel-default”>
<div class=”panel-heading”>
<h4 class=”panel-title”>
<i class=”fa <?php echo esc_attr($icon);?>”></i>
” data-toggle=”collapse” data-parent=”#<?php if( $parent ){ echo esc_html( $parent );}else{ echo ‘accordion’;}?>”><?php echo esc_attr($title); ?>
</h4>
</div><!–end panel heading –>
<div class=”panel-collapse collapse<?php if( $expanded ){echo ‘ in’;}?>” id=”<?php echo esc_attr( $el_id );?>”>
<div class=”panel-body”>
<?php if( $el_class !=’none’ ){?>
<div class=”<?php echo esc_html( $el_class);?> items”>
<?php
$content = strip_tags( $content, ‘- ‘);
$content = preg_replace_callback(‘/ - ([ \w\s]+):(.*)<\/li>/im’, function( $matches ){
return “<li class=’col-sm-6′ ><i class=’fa fa fa-arrow-circle-o-right’></i> <p>{$matches[1]}: <span>{$matches[2]}</span></p>
“;
}, $content);
echo str_replace(‘- ‘, ‘<ul class=”clearfix”>’, $content);
?>
</div><!– end items –>
<?php }else{?>
<p><?php echo apply_filters( ‘the_content’, $content);?></p>
<?php }?>
</div>
</div><!–end panel -collapse –>
</div><!–end panel –>Ele informa que o erro está na linha 24, ou seja, neste código:
$content = preg_replace_callback(‘/
- ([ \w\s]+):(.*)<\/li>/im’, function( $matches ){
Luciana, por favor coloca o código entre CRASES paras para não quebrar na visualização, não está dando para entender nada.
Pode me informar seu e-mail por favor?
Suporte apenas pelo fórum. Basta formatar o código que a visualização fica mais legível, basta editar o código e colocar entre
aspas invertidas
Com formatação ele fica assim, mais bacana de ler:
$i = 1; for (; ; ) { if ($i > 10) { break; } echo $i; $i++; }
<div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title"> <i class="fa <?php echo esc_attr($icon);?>"></i> <a href="#<?php echo esc_attr( $el_id );?>" data-toggle="collapse" data-parent="#<?php if( $parent ){ echo esc_html( $parent );}else{ echo 'accordion';}?>"><?php echo esc_attr($title); ?></a> </h4> </div><!--end panel heading --> <div class="panel-collapse collapse<?php if( $expanded ){echo ' in';}?>" id="<?php echo esc_attr( $el_id );?>"> <div class="panel-body"> <?php if( $el_class !='none' ){?> <div class="<?php echo esc_html( $el_class);?> items"> <?php $content = strip_tags( $content, '<ul><li>'); $content = preg_replace_callback('/<li>([ \w\s]+):(.*)<\/li>/im', function( $matches ){ return "<li class='col-sm-6' ><i class='fa fa fa-arrow-circle-o-right'></i> <p>{$matches[1]}: <span>{$matches[2]}</span></p></li>"; }, $content); echo str_replace('<ul>', '<ul class="clearfix">', $content); ?> </div><!-- end items --> <?php }else{?> <p><?php echo apply_filters( 'the_content', $content);?></p> <?php }?> </div> </div><!--end panel -collapse --> </div>
Qual o objetivo desse replace? Você está pegando uma lista que o usuário insere no conteúdo e substituindo por outra lista? Essa lista é gerada manualmente? Não consigo ver a origem da variável
$content
.Além disso, você utiliza o
strip_tags
para remover<ul>
e<li>
antes de executar o regex, e o regex busca por<li>
certo? Isso retorna alguma coisa?Eu recomendaria que você mude este processo, está muito gambiarrado.
É um tema que meu cliente comprou, eu nem alterei nada, neste link http://comunicasite.com.br/real/ está informando o arquivo com erro. E o código abaixo, é o código completo que está neste arquivo.
<?php extract(shortcode_atts(array( 'icon' => '', 'title' => '', 'el_id' => '', 'el_class'=>'none', 'parent' => '', 'expanded'=> '' ), $atts)); ?> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title"> <i class="fa <?php echo esc_attr($icon);?>"></i> <a href="#<?php echo esc_attr( $el_id );?>" data-toggle="collapse" data-parent="#<?php if( $parent ){ echo esc_html( $parent );}else{ echo 'accordion';}?>"><?php echo esc_attr($title); ?></a> </h4> </div><!--end panel heading --> <div class="panel-collapse collapse<?php if( $expanded ){echo ' in';}?>" id="<?php echo esc_attr( $el_id );?>"> <div class="panel-body"> <?php if( $el_class !='none' ){?> <div class="<?php echo esc_html( $el_class);?> items"> <?php $content = strip_tags( $content, '<ul><li>'); $content = preg_replace_callback('/<li>([ \w\s]+):(.*)<\/li>/im', function( $matches ){ return "<li class='col-sm-6' ><i class='fa fa fa-arrow-circle-o-right'></i> <p>{$matches[1]}: <span>{$matches[2]}</span></p></li>"; }, $content); echo str_replace('<ul>', '<ul class="clearfix">', $content); ?> </div><!-- end items --> <?php }else{?> <p><?php echo apply_filters( 'the_content', $content);?></p> <?php }?> </div> </div><!--end panel -collapse --> </div><!--end panel -->
- ‘);
- O tópico ‘syntax error, unexpected T_FUNCTION’ está fechado para novas respostas.