我正在尝试获取字符串,删除单词列表和任何数字,然后在MySQL查询中使用结果。
它会回显我试图隔离的单词,但是当我将该单词等同于该字符串时,它将返回false并且不会查询。
$remove_odonyms=preg_replace("/\b(st|street|rd|road|ln|lane|ter|terrace|ave|avenue|blvd|boulevard|ct|court)\b/", "", $search);
function remove_numbers($string) {
$num = array(1,2,3,4,5,6,7,8,9,0);
return str_replace($num, '', $string);
}
$street_only=remove_numbers($remove_odonyms);
因此字符串$search="60 main street"
echo $remove_odonyms
为"60 main"
而echo $street_only
为"main"
。
但是他们不会查询,他们也不会这样做
if($street_only="main"){ echo "true";}
编辑:我正在进行的查询是
$query="
SELECT * FROM column WHERE number='$int' AND odonym='$odonym' AND street_name='$street_only'
";
它什么都不返回。但当我将其更改为street_name="main"
时,它会返回我要查找的结果。
答案 0 :(得分:1)
您有一个额外的空间,因此您需要修剪以移除空间。所以在查询之前使用trim()删除空格并匹配查询中的确切单词。
$street_only = trim($street_only);
答案 1 :(得分:0)
如果你想过滤掉一点,你可以做几件事:
// Case sensitive string (you may or may not have a upper/lower, but the function is here to see both...)
$search = '16 Main Street';
// added case insensitive on the chance there are uppers
$remove_odonyms = preg_replace("/\b(st|street|rd|road|ln|lane|ter|terrace|ave|avenue|blvd|boulevard|ct|court)\b/i", "", $search);
function remove_numbers($string) {
// remove all numbers
return trim(preg_replace('/[0-9]/','',$string));
}
// Presumming you are storing all lower, force lowercase
// This will echo "main"
$street_only = strtolower(remove_numbers($remove_odonyms));
答案 2 :(得分:0)
$textString ="tim timtim lovetim hitim wholetim byetimbye";
$text = preg_replace('/\btim\b/', 'pankaj', $textString);
echo $text;
答案 3 :(得分:0)
你要离开你自己开放sql注入,顺便说一句....你可以看到,有很多方法可以做到这一点..
<?php
$str = '120 taco bell bvld. 123';
$str = preg_replace('/[^a-zA-z ]/','',$str);
$str = str_ireplace(array('street','road','rd','ct','court','bvld'),'',$str);
$str = trim($str);
$arr = preg_split('/\s/',$str);
$just_street = join(' ',$arr);
print $just_street;
?>