如何在标点符号中使用dot而不是在PHP中附加

时间:2017-03-30 01:38:01

标签: php mysql

我在PHP中将SQL查询放在一起。如何在标点符号中声明一个点?

请求的示例代码:

$sql="SELECT COUNT(*) FROM Table1 WHERE LOWER(location2) REGEXP '.* .$location .*'";

请参阅.*是一个正则表达式,不应将PHP解释为连接。

1 个答案:

答案 0 :(得分:0)

这与PHP语法无关。您的示例在带引号的字符串中包含.,PHP在引用的字符串中将其解释为.。因此没有错。

您可能遇到的是MySQL将.视为正则表达式中的外卡运算符。在正则表达式语法中(无论是在MySQL,PHP,Perl,无论在哪里).是一个匹配任何单个字符的通配符。如果您想在正则表达式中包含文字.,则需要将其转义,即\.

因为您在字符串内的字符串中使用它,所以您还需要转义\字符,以便正确地通过正则表达式。如果没有测试,我会说它需要两次转义(一次用于PHP,一次用于MySQL),例如PHP中的"'\\\\.'"在MySQL中变为'\\.',在正则表达式中变为\.

(显然,只能逃避要按字面意思对待的.个字符 - 我会假设.*是为了匹配任何字符 - 这些不应该更改。)