Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
889 views
in Technique[技术] by (71.8m points)

php - Opposite of nl2br? Is it str_replace?

So the function nl2br is handy. Except in my web app, I want to do the opposite, interpret line breaks as new lines, since they will be echoed into a pre-filled form.

str_replace can take <br /> and replace it with whatever I want, but if I put in , it echoes literally a backslash and an n. It only works if I put a literal line break in the middle of my script, and break the indentation (so there are no trailing space).

See:

    <?=str_replace('<br />','
',$foo)?>

Am I missing escape characters? I think I tried every combination...

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

There will probably be some situations where your code is not enough ; so, what about something like this, to do your replacement :

$html = 'this <br>is<br/>some<br />text <br    />!';
$nl = preg_replace('#<brs*/?>#i', "
", $html);
echo $nl;

i.e. a bit more complex than a simple str_replace ;-)

Note : I would generally say don't use regex to manipulate HTML -- but, in this case, considering the regex would be pretty simple, I suppose it would be OK.


Also, note that I used " "


Basically, a <br> tag generally looks like :

  • <br>
  • or <br/>, with any number of spaces before the /

And that second point is where str_replace is not enough.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...