Така че се опитвам да намеря начин да създам функция, която ще замени текст с изображение, ако е емотикон или с филтрирана дума, ако е забранена дума.
Разгледах този код:
$smiles = array(
'xD' => 'devil.png',
'>:)' => 'devil.png',
'x(' => 'angry.png',
':((' => 'cry.png',
':*' => 'kiss.png',
':))' => 'laugh.png',
':D' => 'laugh.png',
':-D' => 'laugh.png',
':x' => 'love.png',
'(:|' => 'sleepy.png',
':)' => 'smile.png',
':-)' => 'smile.png',
':(' => 'sad.png',
':-(' => 'sad.png',
';)' => 'wink.png',
';-)' => 'wink.png'
);
foreach($smiles as $key => $img) {
$msg = str_replace($key, '<img src="emotions/'.$img.'" height="18" width="18" />', $msg);
}
echo $msg;
Това изглежда достатъчно просто, но какво ще стане, ако искам да добавя нещо като 'BadWord1' => '********'
Знам как да го добавя към този скрипт, тъй като просто бих добавил този нов ред, но той ще се опита да го превърне в изображение.
Възможно ли е да се напише функция, която да замени и текст, и изображения?
В дългосрочен план също искам да премахна прекъсванията на редовете на текстовото поле и да ги заменя с <br>
, вместо да използвам нещо като $val = str_replace( array("\n","\r","\r\n"), '<br />', $val );
Но изглежда не мога да измисля начин да изпълня и трите в рамките на една функция.
Основната ми цел е, когато текстово поле бъде изпратено, да извикам текста на функция като replaceText($textareaText)
и всичко в текста, което трябва да бъде заменено, се заменя.
Ще имам ли нужда от отделни функции?
Ще продължа да работя върху това сам, така че ако измисля някакви възможни развития, ще актуализирам въпроса си, за да го включа.
РЕДАКТИРАНЕ: Ето какво измислих. Смятате ли това за достатъчно?
function replaceText($msg) {
$replaceableText = array(
'xD' => '<img src="emoticons/devil.png" height="18" width="18">',
'>:)' => '<img src="emoticons/devil.png" height="18" width="18">',
'x(' => '<img src="emoticons/angry.png" height="18" width="18">',
':((' => '<img src="emoticons/cry.png" height="18" width="18">',
':*' => '<img src="emoticons/kiss.png" height="18" width="18">',
':))' => '<img src="emoticons/laugh.png" height="18" width="18">',
':D' => '<img src="emoticons/laugh.png" height="18" width="18">',
':-D' => '<img src="emoticons/laugh.png" height="18" width="18">',
':x' => '<img src="emoticons/love.png" height="18" width="18">',
'(:|' => '<img src="emoticons/sleepy.png" height="18" width="18">',
':)' => '<img src="emoticons/smile.png" height="18" width="18">',
':-)' => '<img src="emoticons/smile.png" height="18" width="18">',
':(' => '<img src="emoticons/sad.png" height="18" width="18">',
':-(' => '<img src="emoticons/sad.png" height="18" width="18">',
';)' => '<img src="emoticons/wink.png" height="18" width="18">',
';-)' => '<img src="emoticons/wink.png" height="18" width="18">',
'\n' => '<br>',
'\r' => '<br>',
'\r\n' => '<br>',
'\n\r' => '<br>',
'badword1' => '********',
'badword2' => '********'
);
foreach($replaceableText as $replace => $replacedWith) {
$msg = str_replace($replace, $replacedWith, $msg);
}
return $msg;
}
РЕДАКТИРАНЕ 2:
Забравих да спомена това по-рано, но това е за HTML имейл скрипт.
По този начин мога да напиша нещо просто като <h1>
и то автоматично се преобразува в заглавен таг с предварително зададени вградени стилове.
Може би нещо подобно:
function replaceText($msg) {
$replaceableText = array(
'xD' => '<img src="emoticons/devil.png" height="18" width="18">',
'>:)' => '<img src="emoticons/devil.png" height="18" width="18">',
'x(' => '<img src="emoticons/angry.png" height="18" width="18">',
':((' => '<img src="emoticons/cry.png" height="18" width="18">',
':*' => '<img src="emoticons/kiss.png" height="18" width="18">',
':))' => '<img src="emoticons/laugh.png" height="18" width="18">',
':D' => '<img src="emoticons/laugh.png" height="18" width="18">',
':-D' => '<img src="emoticons/laugh.png" height="18" width="18">',
':x' => '<img src="emoticons/love.png" height="18" width="18">',
'(:|' => '<img src="emoticons/sleepy.png" height="18" width="18">',
':)' => '<img src="emoticons/smile.png" height="18" width="18">',
':-)' => '<img src="emoticons/smile.png" height="18" width="18">',
':(' => '<img src="emoticons/sad.png" height="18" width="18">',
':-(' => '<img src="emoticons/sad.png" height="18" width="18">',
';)' => '<img src="emoticons/wink.png" height="18" width="18">',
';-)' => '<img src="emoticons/wink.png" height="18" width="18">',
'\n' => '<br>',
'\r' => '<br>',
'\r\n' => '<br>',
'\n\r' => '<br>',
'badword1' => '********',
'badword2' => '********',
'<h1>' => '<h1 style="InlineStylesForHTMLEmail">'
);
foreach($replaceableText as $replace => $replacedWith) {
$msg = str_replace($replace, $replacedWith, $msg);
}
return $msg;
}
str_replace
приема масиви. - person chris85   schedule 26.07.2015