shahryarjb
How to get the string concerned with html helping
Hello, I want to count 3 </p> html tag form my string and take them like this, it should be noted I need all of these sting and html tags:
my site contents:
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit</p> <!-- 1 -->
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit</p> <!-- 2 -->
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit</p> <!-- 3 -->
<!-- I need the three items above -->
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit</p>
how do I do cut that? I need those for creating read more in my site.
I have seen String.slice(0..29) , but it hasn’t work for me.
thanks
Marked As Solved
kokolegorille
Once You have Floki…
iex(1)> html = "<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit</p> <!-- 1 -->
...(1)> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit</p> <!-- 2 -->
...(1)> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit</p> <!-- 3 -->
...(1)> <!-- I need the three items above -->
...(1)> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit</p>"
iex(2)> output = Floki.find(html, "p")
[
{"p", [], ["Lorem ipsum dolor sit amet, consectetuer adipiscing elit"]},
{"p", [], ["Lorem ipsum dolor sit amet, consectetuer adipiscing elit"]},
{"p", [], ["Lorem ipsum dolor sit amet, consectetuer adipiscing elit"]},
{"p", [], ["Lorem ipsum dolor sit amet, consectetuer adipiscing elit"]}
]
and then, it’s just a list
iex(3)> output |> Enum.take(3)
[
{"p", [], ["Lorem ipsum dolor sit amet, consectetuer adipiscing elit"]},
{"p", [], ["Lorem ipsum dolor sit amet, consectetuer adipiscing elit"]},
{"p", [], ["Lorem ipsum dolor sit amet, consectetuer adipiscing elit"]}
]
PS: To transform data back to html, You might use a final pipe like this
|> Floki.raw_html
Also Liked
idi527
kokolegorille
Glad You could solve this.
I would like to mention, as a personal opinion, that I don’t find practical to mix styles with elements. For this, I would prefer to use CSS. You don’t even need to style each element, I would use a wrapper class (eg: long, short).
.long p { whatever style here }
.long span {}
.short p {}
.short span {}
etc.
Thus You would not need to change styles at all, it would depend on higher CSS context.
Of course that does not apply if You are not allowed to change layout.
PS: If You use SASS, it is easy to define hierarchy in your styles.








