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, le parole errate vengono sottolineate.
Al momento ho queste funzioni, alcune sono delle perg_replace_callback, ognuna delle quali restituisce output diversi, come posso raggrupparle in modo che restituiscano un unico output?
Codice PHP:
function replacemail($text)
{
$regexemail = '/\b(\s[[:punct:]])*([a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}){1}(\s[[:punct:]])*\b/i';
$replace = '<a href="mailto:$1">$1</a>';
$text = preg_replace($regexemail,$replace,$text);
echo $text;
}
Codice PHP:
function ftphtml($matches)
{
foreach ($matches as $match)
{
return "<a href=\"$match\" target=\"_blank\">$match</a>";
}
}
$regex = '/\b(\s[[:punct:]])*(ftps?|https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?(\s[[:punct:]])*\b/i';
echo preg_replace_callback($regex,"ftphtml",$replacedemail);
Codice PHP:
function bbcodes($text) {
$bbcode = array(
'/\[b\](.*?)\[\/b\]/i',
'/\[i\](.*?)\[\/i\]/i',
'/\[u\](.*?)\[\/u\]/i',
'/\[s\](.*?)\[\/s\]/i',
'/\[url\]((ftps?|https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?)\[\/url\]/i',
'/\[img\](https?:\/\/)?([\da-z\.-]+[a-z\.]{2,6})([\/\da-z\.-]+)(?:jpg|jpeg|gif|png|bmp)\[\/img\]/i',
'/\[quote\](.*?)\[\/quote\]/i',
'/\[code\](.*?)\[\/code\]/i',
'/\[style color="?([a-z0-9#]{3,20})"?\](.*?)\[\/style\]/i',
'/\
[list\](.*?)\[\/list\]/i'
);
$htmlcode = array(
'<b>$1</b>',
'<i>$1</i>',
'<u>$1</u>',
'<s>$1</s>',
'<a href="$1" target="_blank">$1</a>',
'<img src="$1" alt="img" />',
'<blockquote><p>$1</p></blockquote>',
'<pre>$1</pre>',
'<font color="$1">$2</font>',
'<ul><li>$1</li></ul>'
);
return preg_replace($bbcode,$htmlcode,$text);
}
Codice 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 LOWER(abbreviazione) = LOWER('{$match}') ");
while ($abbr = mysqli_fetch_array($query,MYSQLI_ASSOC))
{
return 'Abbreviazione: '.$abbr['corrispondenza'];
}
$conn->close();
}
}
$regex = '/([a-z0-9.]*)/i';
echo preg_replace_callback($regex,"abbreviazioni",$text).'<br>';
Codice 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 preg_replace_callback($regex,"emoji",$text).'<br>';
Codice PHP:
function wrongwords($text)
{
$words = str_word_count($text,1);
$conn = mysqli_connect('127.0.0.1','root','','esame') or die("Connection failed: " . $conn->connect_error);
foreach ($words as $word)
{
$query = mysqli_query($conn,"SELECT * FROM vocabolario WHERE vocabolo like '%$word%'");
if(mysqli_num_rows($query) == 0)
{
$t= "<u>$word</u>";
$text = preg_replace("/\b$word\b/", $t, $text);
}
}
echo $text;
$conn->close();
}