2014-10-20 20 views
0

我想要一個字符串,刪除單詞和任何數字的列表,然後在MySQL查詢中使用結果。str_replace只有整個字

它會回顯我試圖隔離的單詞,但是當我將該單詞放在字符串中時,它將返回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

你有什麼錯誤嗎?看起來工作代碼 – 2014-10-20 04:49:45

+0

你想要的輸出與你得到的是不清楚的。你能編輯一下更清楚地瞭解正在發生或未發生的事情嗎? – JakeGould 2014-10-20 04:51:05

回答

1

你有一個額外的空間,所以你需要修剪以消除空間。所以在查詢之前使用trim()刪除空間並匹配查詢中的確切單詞。

$street_only = trim($street_only); 
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)); 
0
$textString ="tim timtim lovetim hitim wholetim byetimbye"; 
$text = preg_replace('/\btim\b/', 'pankaj', $textString); 
echo $text; 
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; 

?>