Nie zamienia/rozwiązane.

PHP/MYSQL  Założony przez  KissOfDeath.

Więc próbuję stworzyć plugin kostek na forum z sesjami.
Mam taki kod
<?php
    
    $plugins
->add_hook("datahandler_post_insert_post""random_post_parse");
    
$plugins->add_hook("datahandler_post_insert_thread_post""random_post_parse");
    
$plugins->add_hook("datahandler_post_update""random_post_parse");
    
// Funkcja z informacjami o pluginie
    
function random_info() 
    {
        return array(
            
'name'            => 'Random czyli kostki',
            
'description'    => 'Plugin dodający kostki na forum',
            
'website'        => '',
            
'author'        => '',
            
'authorsite'    => '',
            
'version'        => '1.0.0',
            
'guid'            => '',
            
'compatibility'    => '16*'
        
);
    }
    
/*function random_install(){
     
    }
    function random_uinstall(){
        
    }*/
    
function random_activate(){
        
    }
    function 
random_deactivate(){
        
    }
    
//function random_is_installed(){
    //    
    //}
    // Funkcja podpięta pod hak
    
function random_post_parse(&$post
    {
        if(isset(
$post->post_update_data['message']))
        {
            
$msg $post->post_update_data['message'];
        }
        else if(isset(
$post->post_insert_data['message']))
        {
            
$msg $post->post_insert_data['message'];
        }
        else
        {
            return;
        }
        while(
preg_match('#/[random(/d)r(/d)]#i'$msg$m)){
            
$total 0;
            
$s "";
            for(
$i 0$i<$m['2'];$i++){
                
$rand rand(1$m['1']);
                
$total += $rand;
            }
            
$msg preg_replace("#/[random {$m[1]}r{$m[2]}#i""[b]Suma:[/b]{$total}"$msg1);
        }
    if(isset(
$post->post_update_data['message']))
    {
        
$post->post_update_data['message'] = $msg;
    }
    else if(isset(
$post->post_insert_data['message']))
    {
        
$post->post_insert_data['message'] = $msg;
    }
    else
    {
        return;
    }
    }
?>
Teoretycznie powinien on zmieniać [random 4r8] na odpowiednią sumę ale tak się nie dzieje. Wie ktoś co zrobiłem źle?
Nie sprawdzałem dokładnie, ale obstawiam zły wzorzec regex. Spróbuj:

#\[random([0-9]+)r([0-9]+)\]#i

Dodałem backslashe przed nawiasami, bo one są niezbędne (normalnie to robi za zbiór). Poza tym, ja osobiście preferuję zapis typu 0-9 zamiast digit.



Użytkownicy przeglądający ten wątek:

1 gości