我有一串由多个哈希(#)分隔的字符。我需要在php上的哈希之间得到单词。这是我的代码的样子:
$sql = "SELECT attribute_type.at_name,attribute_type.at_id FROM attribute_type
WHERE attribute_type.prodType_id = $pt_id
AND attribute_type.at_id NOT IN (SELECT at_id
FROM attribute_type
WHERE attribute_type.at_name = 'Product')";
while($items. strpos("#")>0){
// add the selected AT in every loop to be excluded
// .
// here tokens from $items are stored individually in
// $selectedAT (whose value changes in every loop/cycle)
//
// add to the current sql statement the values $at_id and $searchparam
$sql = $sql . "AND attribute_type.at_id NOT IN
(SELECT at_id FROM attribute_type
WHERE attribute_type.at_name = '$selectedAT')";
}
$dbcon = new DatabaseManager();
$rs = $dbcon->runQuery($sql);
答案 0 :(得分:5)
explode
通过在给定标记
$words = explode("#", $items);
现在,如果你需要从字符串中提取这些单词并使用它们来比较SQL查询中的某些列...
$sql = "SELECT ... WHERE column IN ('" . implode("', '", $words) . "')";
在数组中包含单词后,您不需要像循环中那样在循环中构建查询。
即使你确实想这样做,你也不想为每个单词创建一个子查询,只要你可以在一个子查询中将单词组合在一起。
答案 1 :(得分:0)
试试strtok
。示例粘贴:
$string = "This is\tan example\nstring";
$tok = strtok($string, " \n\t");
while ($tok !== false) {
echo "Word=$tok<br />";
$tok = strtok(" \n\t");
}
答案 2 :(得分:0)
请勿按照另一个答案(现已更新)中的建议使用split 。它使用旧的POSIX规则表达式,不推荐使用。
要拆分字符串,请使用不使用正则表达式但使用普通字符串的$words = explode('#', $items);
。
Docref:http://php.net/explode