简体   繁体   中英

How to wrap each new line in textarea with li tags? PHP

I have a textarea form field where users will put URL's separated by a new line. Would it be possible to wrap each line from this textarea field with < li > tags?

So I would need the output from the field to be something like this:

<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>

Does anyone know who to achive this with PHP please?

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

EDIT

Modified to get rid of all blank lines as well:

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

And what about something like this

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

Output will be anything like this (not nice, but usefull):

<li>dsadsa
</li>
<li>dsdsa
</li>
<li>dsadsad
</li>
<li>dsadsadsad
</li>
<li>vcxvxcvxvcxvcx
</li>
<li>fdsfdsfdsfs
</li>

Using a regular expression you can check for non-empty lines as part of your test:

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

That way if the user has an extra new line at the end of their input (or anywhere inside) you won't get extra empty list items.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM