![](/img/trans.png)
[英]PHP MySQL Check If String Contains Query In Only First Few Characters
[英]Remove first few characters if it is contains in an array
如果字符串包含數組Ex,則需要從字符串中刪除前幾個字符。 弦
$str1 = "W. San Marcos Blvd";
$str2 = "E. Point Loma Blvd";
$str3 = "East Palomar St"
例如 數組
$array = array('S', 'S.', 'N', 'N.', 'E', 'E.', 'W', 'W.', 'South', 'North', 'East', 'West');
在上述情況下,需要從$str1
, $str2
和$str3
刪除W.,E。和East
$str1 = "W. San Marcos Blvd";
$array = array('S', 'S.', 'N', 'N.', 'E', 'E.', 'W', 'W.', 'South', 'North', 'East', 'West');
$str=explode(" ", $str1);
foreach($str as $key=>$s){
if (in_array($s, $array)) {
unset($str[$key]);
}
}
$str1=implode(" ", $str);
將$ str1的$ str2或$ str3實例用於其他字符串。
這是使用regex和preg_replace()
的聰明/可靠的方法。 在模式中使用^
錨和尾部空格可確保僅刪除預期的子字符串。 (如果您發現無法依靠尾隨空格的情況,則應使用單詞邊界( \\b
)。
方法( 演示 ):
$input=["W. San Marcos Blvd","E. Point Loma Blvd","East Palomar St"];
$pattern='/^(?:E(?:\.|ast)?|W(?:\.|est)?|N(?:\.|orth)?|S(?:\.|outh)?) /';
var_export(preg_replace($pattern,'',$input));
輸出:
array (
0 => 'San Marcos Blvd',
1 => 'Point Loma Blvd',
2 => 'Palomar St',
)
或更確切地說,如何處理一個字符串:
$input="W. San Marcos Blvd";
$pattern='/^(?:E(?:\.|ast)?|W(?:\.|est)?|N(?:\.|orth)?|S(?:\.|outh)?) /';
echo preg_replace($pattern,'',$input);
// output: San Marcos Blvd
該圖案會濃縮您的基點陣列,同時保持准確性。 我已命令從最短方向詞到最長方向詞的替代方法-這可以優化速度。 這是模式演示 。
你可以這樣
$str1 = "W. San Marcos Blvd";
$str2 = "E. Point Loma Blvd";
$str3 = "East Palomar St";
function remove ( $string ) {
$array = array('S', 'S.', 'N', 'N.', 'E', 'E.', 'W', 'W.', 'South', 'North', 'East', 'West');
foreach ($array as $remove) {
$len = strlen($remove);
if ( substr($string, 0, $len) === $remove ) {
$string= substr($string, $len );
}
}
return $string;
}
echo "{$str1}=".remove($str1);
請注意,它在$ array中查找字符串的方式可能比后面的字符串短。 因此,在這種情況下,它將返回W. San Marcos Blvd=. San Marcos Blvd.
W. San Marcos Blvd=. San Marcos Blvd.
匹配“ W”選項,而不是“ W”。 選項。 您可以重新排列數組以首先包含較長的項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.