Как обернуть каждую новую строку в текстовой области тегами li? PHP


У меня есть поле формы текстовой области, в котором пользователи будут помещать URL-адреса, разделенные новой строкой. Можно ли обернуть каждую строку из этого поля текстовой области тегами

  • ?

    Поэтому мне нужно, чтобы вывод из поля был примерно таким:

    <li>some.url.com</li>
    <li>some.url.com</li>
    <li>some.url.com</li>
    <li>some.url.com</li>
    <li>some.url.com</li>
    

    Кто-нибудь знает, кто может достичь этого с помощью PHP, пожалуйста?

  • Author: Brigante, 2010-08-15

    3 answers

    $textareaData = '<li>'.str_replace("\n","</li>\n<li>",trim($textareaData,"\n")).'</li>';
    

    РЕДАКТИРОВАТЬ

    Изменено, чтобы также избавиться от всех пустых строк:

    $textareaData = '<li>'.str_replace(array("\r","\n\n","\n"),array('',"\n","</li>\n<li>"),trim($textareaData,"\n\r")).'</li>';
    
     13
    Author: Mark Baker, 2010-08-15 15:44:12

    А как насчет чего-то вроде этого

    echo preg_replace('/^(.+)(\s*)$/m', '<li>$1</li>', $text);
    

    Вывод будет примерно таким (не очень приятным, но полезным):

    <li>dsadsa
    </li>
    <li>dsdsa
    </li>
    <li>dsadsad
    </li>
    <li>dsadsadsad
    </li>
    <li>vcxvxcvxvcxvcx
    </li>
    <li>fdsfdsfdsfs
    </li>
    
     1
    Author: Michal Forbak, 2015-03-11 14:26:47

    Используя регулярное выражение, вы можете проверить наличие непустых строк в рамках вашего теста:

    $li_text = preg_replace('/^(.+)$/', '<li>$1</li>', $_POST['textarea']);
    

    Таким образом, если у пользователя есть дополнительная новая строка в конце ввода (или где-либо внутри), вы не получите дополнительных пустых элементов списка.

     0
    Author: SoapBox, 2010-08-15 13:38:24