Преобразуйте список в массив, используя php.Как? - PullRequest
0 голосов
/ 11 февраля 2012

У меня есть функция с именем listelements(), которая выводит текст наподобие <li>text1</li><li>text2</li>.

У меня более 500 элементов. Теперь я хочу преобразовать его в массив.

Кто-нибудь может мне помочь? Спасибо.

Примечание: я использую php

Обновление:

Я хочу добиться алфавитной навигации. На данный момент моя функция отображает ссылки в порядке списка. Вместо этого я хочу держать это в массиве. Тогда я хотел бы отфильтровать их, используя символы.

$valid_characters = range( 'a' , 'z' );
$valid_numbers = array(1,2,3,4,5,6,7,8,9,0);

Когда пользователь нажимает «A», я хотел бы, чтобы отображались только ссылки, начинающиеся с A. Надеюсь, это объяснение поможет вам лучше понять мой вопрос

Ответы [ 4 ]

2 голосов
/ 11 февраля 2012
<?php
$output = listelements();
$array = explode("<li>", $output);

//First element will be empty, so remove it
unset($array[0]);

// Now remove "</li>" at end of input
array_walk($array, create_function('&$val', '$val = str_replace("</li>", "", $val)'));

// $array should now contain your elements
1 голос
/ 11 февраля 2012

взорваться не будет хорошо для html-тегов (рассматривая их как несколько разделителей).

, если время ЦП не имеет значения, попробуйте использовать preg_match, пример ниже:

<?PHP

$input='<li>text1</li><li>text2</li><LI><p>text3</p></lI><Li>text fou4r</li>';

preg_match_all('(<(li|Li|LI|lI)>(.*)</(li|Li|LI|lI)>)siU', $input, $output);

print_r($output[2]);
?>

вывод:

Array

    (

        [0] => text1
        [1] => text2
        [2] => <p>text3</p>
        [3] => text fou4r
    )
0 голосов
/ 11 февраля 2012

Использование "preg_match" .

Подробнее: http://www.php.net/manual/en/function.preg-match-all.php

0 голосов
/ 11 февраля 2012
$strarr=explode("<li>",$string); //Breaks every <li>
$i=(-1); //Makes -1 as array starts at 0
$arr=array(); //this will be your array
foreach($strarr as $expl){ //Go through all li's
$ai=explode("</li>",$expl);//Get between the li. If there is something between </li> and <li>, it won't return it as you don't need it
if($i!=(-1))$arr[$i]=$ai[0]; //First isn't valid
$i=$i+1; //add i plus one to make it a real array
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...