有一個包含多個資料的陣列。每個陣列索引都有一個由“>”符號分隔的字串。最后,它應該顯示每個索引字串的最后一部分。
這是當前陣列。請注意表情符號是必需的。
(
[0] => val 1
[1] => val 1 > Search ?
[2] => val 1 > Search ? > Plain search ?
[3] => val 1 > val 2 ? > Val 3 ?
[4] => val 1 > val 2 ? > Val 3 ? > Val 4 ?
[5] => val 1 > val 2 ? > Val 3 ? > Val 4 ?
[6] => val 1 > val 2 ? > Val 3 ? > Val 4 ? > Val 5 ?
[7] => val 1 > Search ? > Val 3 ? > Val 4 ? > Val 5 ?
[8] => val 1 > val 2 ?
[9] => val 1 > val 2 ? > Val 3 ?
[10] => val 1 > val 2 ? > Val 3 ?
)```
What should be the sorted output is,
```Array
(
[0] => val 1
[1] => Search ?
[2] => Plain search ?
[3] => Val 3 ?
[4] => Val 4 ?
[5] => Val 4 ?
[6] => Val 5 ?
[7] => Val 5 ?
[8] => val 2 ?
[9] => Val 3 ?
[10] => Val 3 ?
)```
What I have tried is,
```$x = ltrim(stristr($x, '>'), '>');
$x = ltrim(stristr($x, '>'), '>');
echo $x;
但這最多只有兩個“>”。“>”的數量無法確定。它可以是無限的。執行此操作的最佳回圈方法是什么?
問題一旦做以下回答!

正則運算式: /(?:. > )?(. )/
$search = [
"val 1",
"val 1 > Search ?",
"val 1 > Search ? > Plain search ?",
"val 1 > val 2 ? > Val 3 ?",
"val 1 > val 2 ? > Val 3 ? > Val 4 ?",
"val 1 > val 2 ? > Val 3 ? > Val 4 ?",
"val 1 > val 2 ? > Val 3 ? > Val 4 ? > Val 5 ?",
"val 1 > Search ? > Val 3 ? > Val 4 ? > Val 5 ?",
"val 1 > val 2 ?",
"val 1 > val 2 ? > Val 3 ?",
"val 1 > val 2 ? > Val 3 ?"
];
print_r($search);
$result = [];
foreach ( $search as $row )
{
preg_match('/(?:. > )?(. )/', $row, $matches);
$result[] = $matches[1];
}
print_r($result);
運行示例
uj5u.com熱心網友回復:
你可以先做一個foreach,然后用strrpos獲取最后一個“>”之后的文本。這里有一個例子。`
$search = array (
0 => "val 1",
1 => "val 1 > Search ?",
2 => "val 1 > Search ? > Plain search ?",
3 => "val 1 > val 2 ? > Val 3 ?",
4 => "val 1 > val 2 ? > Val 3 ? > Val 4 ?",
5 => "val 1 > val 2 ? > Val 3 ? > Val 4 ?",
6 => "val 1 > val 2 ? > Val 3 ? > Val 4 ? > Val 5 ?",
7 => "val 1 > Search ? > Val 3 ? > Val 4 ? > Val 5 ?",
8 => "val 1 > val 2 ?",
9 => "val 1 > val 2 ? > Val 3 ?",
10 =>" val 1 > val 2 ? > Val 3 ?"
) ;
$result = array ( ) ;
foreach ( $search as $row )
{
$result [ ] = str_replace ( "> " , "" , substr ( $row , strrpos ( $row , ">" ) ) ) ;
}
`
uj5u.com熱心網友回復:
您可以使用preg_replace并使用模式將陣列傳遞給它:
^.*>\h*
解釋
^字串的開始.*>匹配最后一次出現的>\h*匹配可選的尾隨空格
在替換中使用空字串。
例子
$arr = [
"val 1",
"val 1 > Search ?",
"val 1 > Search ? > Plain search ?",
"val 1 > val 2 ? > Val 3 ?",
"val 1 > val 2 ? > Val 3 ? > Val 4 ?",
"val 1 > val 2 ? > Val 3 ? > Val 4 ?",
"val 1 > val 2 ? > Val 3 ? > Val 4 ? > Val 5 ?",
"val 1 > Search ? > Val 3 ? > Val 4 ? > Val 5 ?",
"val 1 > val 2 ?",
"val 1 > val 2 ? > Val 3 ?",
" val 1 > val 2 ? > Val 3 ?",
];
$result = preg_replace("/^.*>\h*/", "", $arr);
print_r($result);
輸出
Array
(
[0] => val 1
[1] => Search ?
[2] => Plain search ?
[3] => Val 3 ?
[4] => Val 4 ?
[5] => Val 4 ?
[6] => Val 5 ?
[7] => Val 5 ?
[8] => val 2 ?
[9] => Val 3 ?
[10] => Val 3 ?
)
查看PHP 演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/404889.html
標籤:
上一篇:Laravel7-更新用戶
