【发布时间】:2014-02-25 11:28:49
【问题描述】:
我的代码是:
$db = &JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('old', 'new')))
->from($db->quoteName('#__words'));
$db->setQuery($query);
$results = $db->loadAssocList();
$find = array();
$replace = array();
foreach ($results as $row) {
$find[] = $row['old'];
$replace[] = $row['new'];
}
$newstring = str_replace($find, $replace, $oldstring);
echo $newstring;
此代码将“旧”列中的所有单词替换为“新”列中的单词。但是有两个问题。首先,如果找到的单词和替换的单词都具有相同的大小写(大写或小写),则它可以工作,但无论大小写如何,我都需要它可以工作,即数据库只有小写但如果前端的查找单词有大写,替换的单词也必须大写。其次,我需要精确的单词匹配。提前致谢!
【问题讨论】:
-
那就试试str_ireplace
-
你所说的“前端的查找词[有]大写”到底是什么意思?如果只有单词的第一个字母是大写的,替换字符串的第一个字母是否也是大写的?还是单词总是完全大写或小写?
-
所有可能的情况都是最好的解决方案,即替换的单词必须始终与找到的单词相同(旧 - 新,旧 - 新,旧 - 新)但在数据库中它们必须在仅小写
标签: php regex arrays string str-replace