#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;
}
Он разбивает всю строку на массив, используя точку в качестве разделителя, и отфильтровывает пустые элементы.