From the category archives:

PHP

I’ve been an advocate of seperating logic from presentation for a long time now. But after working on a few large PHP projects lately, I’ve decided that I need to have loops in my template class, it’s too time conusming creating seperate templates to be placed inside loops.

I started off by defining a readable syntax for the loops inside my templates.

<@loop(contacts)
{
<p>Name: {name}<br />
Sex: {sex}</p>
}
@>

‘contacts’ would be the name of the array I’m going to loop through.

Here is the function that will process the loop. Simply pass a string containing the loop, and it will return the output.


<?php
    
function parseLoop($loop)
    {
        
$loop_result '';
        
        
        
// get the name of the loop
        
        
preg_match('/loop((.*))/'$loop$loop_name);
        
        
        
// get the loop contents
        
        
preg_match('/{(.*)}/s'$loop$loop_contents);
                    
                                            
        
// get all the vars from loop_contents
        
        
preg_match_all('/{(.*)}/'$loop_contents[1], $vars);
        
        
        
// loop through the global array
        
        
foreach($arrays[$loop_name[1]] as $item)
        {
            
            
$loop_item $loop_contents[1];
                            
            
            
// loop through every variable found, and replace it with its value in the global array
            
            
foreach($vars[1] as $var)
            {
                
$loop_item = @str_replace('{'.$var.'}'$item[$var], $loop_item);
            }        
            
            
$loop_result .= $loop_item;
        }
                
        return 
$loop_result;
        
    }
?>

And here is the array containing the contacts.


<?php
    $arrays 
= array('contacts' = array(
                            array(
'name' => 'jane''sex' => 'f'),
                            array(
'name' => 'bob''sex' => 'm')
                            );
?>

To use the function you need to find the loops in the templates using regular expressions, pass it through parseLoop(), then replace the loop block with the output.

{ 0 comments }

I needed to make a script in PHP to scan a page of text and return the top 10 keywords.

I decided to give more importance to words starting with uppercase characters. I couldn’t find any PHP functions available, so I thought I would write my own. Hopefully someone finds this useful.


<?php
    $string 
'Titanic';
    
    function 
isFirstUC($string)
    {
        if(
strstr($string[0], ucfirst($string[0])))
            return 
True;
        else
            return 
False;
            
    }
    
    echo 
isFirstUC($string);
    
?>

{ 0 comments }