我经常使用preg_replace()
,但并不是很擅长它。
如果我启动一个函数并故意输入我想要使用的所有表情符号,例如:
<?php
function parse_emotes($body){
$body = preg_replace("#\:p#i", "<img src='images/emotes/tongue.png' alt=':p' title=':p' />", $body);
//they continue like i said
return $body;
}
?>
今天我试图改变一下,使用mysql让我可以随意插入和删除它们而不必在我的代码中操作。但是当我尝试时,它只会抛出如下警告:
警告: preg_replace() [function.preg-replace]: No ending delimiter '#' found in PATH/TO/FILE.php on line 226
这是我第一次使用的代码:
<?php
function parse_emotes($body){
while($row = $db->Query("SELECT * FROM emotes", 3)) {
return $body = preg_replace($row['regex'], "<img src='images/emotes/" . $row['src'] . "' alt='" . $row['alt'] . "' title='" . $row['alt'] . "' />", $body);
}
}
?>
这个方法没有起作用,是的,正则表达式包含了分隔符,因此输出结果为#\:p#
我遇到了和之前相同的错误,然后我尝试从MySQL中将数据中的#
移除,并且只需更改preg_replace
如下:
preg_replace('#' . $row['regex'] . '#i', .......)
而它仍然不喜欢吗?我还尝试过分配:
$regex = $row['regex'];
preg_replace("#$regex#i");
你猜怎么着?还是没有结果。非常感谢任何有关该问题应该去哪里寻求帮助的建议。
return
语句,您的代码只会尝试替换从数据库返回的第一个表情符号吗? - salathe