[英]Cut string in PHP at nth-from-end occurrence of character
我有一個可以用多種不同方式編寫的字符串,它將始終遵循相同的模式,但是其長度可以不同。
this/is/the/path/to/my/fileA.php
this/could/also/be/the/path/to/my/fileB.php
another/example/of/a/long/address/which/is/a/path/to/my/fileC.php
我想做的是切斷繩子,這樣我就可以了
path/to/my/file.php
$max = strlen($full_path);
$n = 0;
for($j=0;$j<$max;$j++){
if($full_path[$j]=='/'){
$n++;
if($n>=3){
break 1;
}
}
}
$path = substr($full_path,$j+1,$max);
它基本上在'/'字符的第三個實例處將其剪切,並提供剩余的內容。 當我在一個環境中工作時,這很好,但是當我將其遷移到另一台服務器時,路徑會更長,因此剪切將使我的地址太長。 我認為與其更改每個實例的硬編碼整數值,不如將它從最后一個實例的第4個開始切掉,這樣會更好,因為我一直想保留最后4個“斜杠”信息
非常感謝
編輯-最終代碼解決方案
$exploded_name = explode('/', $full_path);
$exploded_trimmed = array_slice($exploded_name, -4);
$imploded_name = implode('/', $exploded_trimmed);
只需對字符串使用explode,如果pattern始終相同,則獲取數組的最后一個元素,即可完成工作
$pizza = "piece1/piece2/piece3/piece4/piece5/piece6";
$pieces = explode("/", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
然后反轉數組,獲取數組的前四個元素,並使用“爆破”組合它們以獲得所需的字符串
下面的函數可以像第n次出現的substr一樣工作
function substr_after_nth($str, $needle, $key)
{
$array = explode($needle, $str);
$temp = array();
for ($i = $key; $i < count($array); $i++) {
$temp[] = $array[$i];
}
return implode($needle, $temp);
}
例
$str = "hello-world-how-are-you-doing";
在第4次出現“-”后進行substr以獲得“您正在做”,將上述函數調用為
echo substr_after_nth($str, "-", 4);
它會導致
you-doing
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.