Как я могу удалить случайное количество точек и получить последнее число?

#php

#php

Вопрос:

Я пытаюсь удалить все точки, а затем получить число и ИМЯ [X] в качестве вывода.

Мой вывод:

 NAME..................................................................................................3
NAME2...................................................................................................24
NAME3...............................................................................................................................................5
NAME4.......................347
NAME5............................................................................................7
NAME6......................................................................9
 

Я уже пробовал что-то подобное:

 function introExcerpt($id = null, $introExcerptCut = null)
    {
     
        $fileInfo['intro'] = 'my string';
        $introExcerpt = trim($fileInfo['intro']);

        $lines = preg_split('/rn|r|n/', $introExcerpt);
        $intro = '<div class="toc"><ul class="toc">';
        
        for ($i = 0; $i < count($lines); $i  ) {
           // if (isset($lines[$i]) amp;amp; substr(trim($lines[$i]), -1) !== '.') {
                $intro.= $lines[$i].'<br />';
            //}
        }
        $intro .= '</div></ul>';

        return $intro;
    }
    
 

Комментарии:

1. A preg_split для нескольких точек внутри цикла было бы простым подходом.

2. Каков фактический ожидаемый результат?

Ответ №1:

Не уверен, как именно должен выглядеть ваш вывод, но вы можете попробовать просто запустить preg_replace непосредственно переменную, содержащую все строки:

 $lines = preg_replace("/(NAMEd ). (d )/", "$1[$2]", $lines);
 

Это сгенерирует следующий вывод на основе вашего образца ввода:

 NAME[3]
NAME2[24]
NAME3[5]
NAME4[347]
NAME5[7]
NAME6[9]
 

Ответ №2:

Вы можете использовать следующую функцию:

 function introExcerpt($str, $id = null, $introExcerptCut = null)
{

    $fileInfo['intro'] = $str;
    $introExcerpt = trim($fileInfo['intro']);

    $lines = preg_split('/rn|r|n/', $introExcerpt);
    $intro = '<div class="toc"><ul class="toc">';

    for ($i = 0; $i < count($lines); $i  ) {
        $intro .= '<li>';
        $tmpLineArray = explode('.', $lines[$i]);
        array_filter($tmpLineArray, function ($value) {
            return !is_null($value) amp;amp; $value != '';
        });

        foreach ($tmpLineArray as $value) {
            $intro .= $value . ' ';
        }
        
        $intro .= '</li>';
    }
    $intro .= '</ul></div>';

    return $intro;
}
 

Он разбивает всю строку на массив, используя точку в качестве разделителя, и отфильтровывает пустые элементы.