我在這里缺少什么?它將 APT 置為紅色,但沒有找到 LOT 出現。如果我一起洗掉 elseif 陳述句并將 APT 更改為 LOT,它可以很好地處理 LOT 事件。為什么兩個都找不到?
if (strrchr($row["Address"], "APT") == true) {
$keyword = "APT";
$addr = preg_replace('/\b' . preg_quote($keyword) . '\s*\w /i', ', <span style="color:red;">$0</span>', $row['Address']);
}
elseif (strrchr($row["Address"], "LOT") == true) {
$keyword = "LOT";
$addr = preg_replace('/\b' . preg_quote($keyword) . '\s*\w /i', ', <span style="color:red;">$0</span>', $row['Address']);
}
else {
$addr = $row["Address"];
}
uj5u.com熱心網友回復:
看起來,由于模式相同,并且 APT 和 LOT 的替換相同,您可以將它們放在同一個preg_replace呼叫中。
無論如何, if/elseif 對我來說似乎是多余的,因為模式將不匹配,如果這些關鍵字不在字串中,則不會替換任何內容。
$addr = preg_replace('/\b(?:LOT|APT)\s*\w /i', ', <span style="color:red;">$0</span>', $row['Address']);
uj5u.com熱心網友回復:
strrchr()是字符搜索,而不是字串搜索。你需要使用類似的東西strpos()。
例如:
if (strrchr('ABC','AB')){
echo 'found';
}
和
if (strrchr('ABC','BA')){
echo 'found';
}
兩者都顯示found為針A中的第一個字符(在第一個和B第二個中)被找到。
如果要查找字串而不是字符匹配,則需要使用類似的方法strpos()。
if (strpos('ABC','AB') !== false){
echo 'found';
}
和
if (strpos('ABC','BA') !== false){
echo 'found';
}
只有第一個示例會顯示found. 注意:您需要使用!== falseasstrpos()將回傳字串位置或false.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/317715.html
上一篇:選擇值包含新列的特定字串
