簡體   English   中英

如果數組中包含前幾個字符,則將其刪除

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM