Raggruppare piu' funzioni in una sola

Antonio102

Utente Attivo
12 Set 2014
36
0
6
Ciao a tutti, sto creando uno script che prende in input un testo e come output da lo stesso testo a cui vengono sostuiti i codici per le emoticon ( ad esempio :smile: ) con la relativa faccina, le email vengono rese cliccabili cosi come i link http e ftp, e le abbreviazioni sostuite con la parola intera.

Al momento ho queste 4 funzioni, ognuna delle quali restituisce 4 output diversi, come posso raggrupparle in modo che restituiscano un unico output?

PHP:
function replacemail($matches)
{
foreach ($matches as $match)
	{
	return "<a href=\"mailto:$match\">$match</a><br>";
	}
}

$regex = '/\b(\s[[:punct:]])*([a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}){1}(\s[[:punct:]])*\b/i';
echo preg_replace_callback($regex,"replacemail",$text);

PHP:
function abbreviazioni($matches)
{
foreach ($matches as $match)
	{
	$conn = mysqli_connect('127.0.0.1','root','','esame') or die("Connection failed: " . $conn->connect_error);
	$query = mysqli_query($conn,"SELECT corrispondenza FROM `abbreviazioni` WHERE abbreviazione='{$match}' ");
		while ($abbr = mysqli_fetch_array($query,MYSQLI_ASSOC))
		{
		return $abbr['corrispondenza'];
		}
	$conn->close();
	}
}

$regex = '/([a-z0-9.]*)/i';
$lowertext = strtolower($text);
echo '<br>'.preg_replace_callback($regex,"abbreviazioni",$lowertext).'<br>';

PHP:
function emoji($matches)
{
foreach ($matches as $match)
	{
	$conn = mysqli_connect('127.0.0.1','root','','esame') or die("Connection failed: " . $conn->connect_error);
	$query = mysqli_query($conn,"SELECT link FROM `emoticons` WHERE emoji='{$match}' ");
		while ($link = mysqli_fetch_array($query,MYSQLI_ASSOC))
		{
		return "<img src=\"$link[link]\">";
		}
	$conn->close();
	}
}

$regex = '/(:{1}[0-9a-z]*:{1})/i';
echo '<br>'.preg_replace_callback($regex,"emoji",$text).'<br>';

PHP:
function ftphtml($matches)
{
foreach ($matches as $match)
	{
	return "<a href=\"$match\" target=\"_blank\">$match</a><br>";
	}
}

$regex = '/\b(\s[[:punct:]])*(ftps?|https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?(\s[[:punct:]])*\b/i';
echo preg_replace_callback($regex,"ftphtml",$text);
 
Puoi fare:
PHP:
$testo = ftphtml(abbreviazioni(replacemail(emoji($testo))));
Ora $testo dovrebbe avere tutto.
 

Discussioni simili