你好。数据库中有一张表slovo,它的结构是:
id - auto_increment
name - само слово( уникальный )
有一个变量:$text,其中包含一些文本。
该表slovo有一个条目: id = 1, name = Apple , id = 2, name = tree
$text = "В корзине лежит яблоко. В поле стоит дерево.";
问题:如何判断变量中是否有表中的词,如果有,则在中slovo选择这些词<span id="id_slovo">слово</span>,其中id_slovo是这个词从数据库中的id值。
PS鉴于可能有短语。
如果有任何有用的信息,我将不胜感激。
PHP MySQL PDO
我认为这是正确的解决方案
要替换为您自己的参数:
如果你想使用形态学(比如 phpMorphy 库),那么我建议:
1)如果slovo表的记录数不大,做full fetch
$handle = $link->prepare('SELECT id, name FROM slovo ORDER BY CHAR_LENGTH(name) DESC'); $句柄->执行();
2)如果slovo表的记录数较多,那么为了减少替换时间,在slovo表中增加一列放置词根(可以自动通过库)过滤INSTR(? , new_column) 就可以了。
3) After 当遍历单词 before 时
加载单词的所有变体,然后为每个变体执行 preg_replace。
该解决方案并未正式化为一个类,因为据我所知,这将是您任务的一部分。这里我们只关注要点。
例子
这是我得到的收银员:
像这样使用它:
嗯,相应地,像这样从数据库中获取值将是最方便的:
一种选择:
这个想法是使用 MySQL 函数:
INSTR()+ 添加了对最大替换次数的限制。第二个选项:
INSTR()例如,如果您希望独立于 DBMS,我们不使用。