Php 如何根据正则表达式选择行?

Php 如何根据正则表达式选择行?,php,mysql,regex,Php,Mysql,Regex,我有一张这样的桌子: // mytable +----+----------------------+ | id | sentence | +----+----------------------+ | 1 | thIs! is, a** tEst? | | 2 | and also This ^ is& | | 3 | --it^% is tOo. | +----+----------------------+ 我还有一个变量: $str

我有一张这样的桌子:

// mytable
+----+----------------------+
| id |       sentence       |
+----+----------------------+
| 1  | thIs! is, a** tEst?  |
| 2  | and also This ^ is&  |
| 3  | --it^% is tOo.       |
+----+----------------------+
我还有一个变量:

$str = "this-is-a-test";
/* the above string is made according to this:
   strtolower(trim(preg_replace('~[^0-9a-z]+~i', '-', $str)));
*/
这也是我的疑问:

SELECT * FROM mytable WHERE sentence = '$str';
现在我想要这个输出:

+----+----------------------+
| id |       sentence       |
+----+----------------------+
| 1  | thIs! is, a** tEst?  |
+----+----------------------+


在搜索之前,如何在列上临时应用该正则表达式?

您可以在MySQL中使用正则表达式执行搜索:)
不要困惑正则表达式将由SGBD执行,而不是由PHP执行

SELECT * FROM mytable WHERE sentence REGEXP '$str';

有关更多信息,请访问MySQL文档

您可以在MySQL中使用正则表达式执行搜索:)
不要困惑正则表达式将由SGBD执行,而不是由PHP执行

SELECT * FROM mytable WHERE sentence REGEXP '$str';

有关更多信息,请访问MySQL文档

此测试通常不会被视为正则表达式。你是在问一般如何执行正则表达式选择吗?(如果是这样,谷歌就是你的朋友……而你的查询是错误的;在寻求帮助之前先搜索)。您是否需要与第1行中的句子匹配的正则表达式?如果是这样的话,您可能应该阅读有关如何形成正则表达式的内容,这样您就可以在请求帮助之前进行最少的努力。您是否有一个实际的正则表达式无法匹配此输入?如果是这样的话,你应该把它贴出来,以便有人能帮你更正。@mah好的,忘了正则表达式。。我有一个字符串:
this-is-a-test
,数据库中有一个字段:
this!是**测试吗?
。如何使用该字符串在数据库中选择该字段?@stack Via a regex=)请参阅@stack you cannot。您需要能够匹配字符串的有效正则表达式(通过SELECT…REGEXP),或者需要有效的子字符串(通过SELECT…LIKE,使用通配符)或完整字符串。其他的东西是不能解决问题的。您可以使用
SELECT。。。哪里类似于“%this%是%a%test%”
但虽然这将匹配您发布的输入,但它将匹配许多您可能不想看到的内容(因为
%
匹配的不仅仅是非字母的堆栈,你读了@syck提供的链接了吗?他帮你做了谷歌搜索…请试着用一些合理的努力帮助自己。如果在那之后你仍然卡住了,你会有更好的结果,通过发布你正在尝试但失败的表达式和代码/查询。
这是-a-test通常不会被视为正则表达式。您是否询问如何执行正则表达式选择?(如果是,谷歌是您的朋友……您的查询是错误的;请在寻求帮助之前进行搜索)。您是否需要与第1行中的句子相匹配的正则表达式?如果是,您可能应该阅读有关如何形成正则表达式的内容,以便在请求帮助之前至少尽可能少地付出努力。您是否有实际的正则表达式无法匹配此输入?如果是,您应该将其发布给其他人我可以帮你更正它。@mah好的,忘了正则表达式。。我有这个字符串:
this-is-a-test
,我在数据库中有这个字段:
this!is,a**test?
。我如何使用该字符串在数据库中选择该字段?@stack Via regex=)请看@stack你不能。你需要一个能够匹配字符串的有效正则表达式(通过SELECT…REGEXP),或者您需要一个有效的子字符串(通过SELECT…LIKE,使用通配符),或者完整的字符串。其他东西不会剪切它。您可以使用
SELECT…找到您需要的内容,其中…例如“%this%是%a%test%”
但是,尽管它将匹配您发布的输入,但它将匹配许多您可能不打算使用的内容(因为
%
匹配的不仅仅是非字母的堆栈,你读了@syck提供的链接了吗?他帮你做了谷歌搜索…请尝试用一些合理的努力帮助你自己。如果在那之后你仍然卡住了,你会有更好的结果,通过发布你正在尝试但失败的表达式和代码/查询。这是哪里模式?
~[^0-9a-z]+~i
@堆叠一个更好的问题,一个让你回答的问题(或者向你的教授/GTA寻求帮助,如果你已经知道答案)这个模式匹配什么?基于你试图完成的,我很确定它没有达到你想要的效果(除非您没有提供一些信息)。当由php(而不是MySQL)处理时,该模式似乎匹配一个非字母数字字符字符串…这显然不足以满足您要匹配的内容。该模式在哪里?
~[^0-9a-z]+~i
@堆栈一个更好的问题,供您回答(或者从你的教授/GTA那里得到帮助,如果你已经知道答案的话)这个模式匹配什么?根据你试图完成的,我很确定它不会做你想要它做的事情(除非你没有提供一点信息)似乎匹配一个非字母数字字符字符串…这显然不足以匹配您要匹配的内容。