Search code examples
phppreg-match

How to get a new line from peragraph using preg_match_all function in php?


I have a peragraph with some new lines :

 First line

Second line

Third line

 And this is the last line

I want to get the second line from the above peragraph.

So the result I want should be :

 "Second line"

I have tried the following script with preg_match_all() function but I don't know why it's not working.

 <?php
 $pera="First line

 Second line

 Third line

  And this is the last line";


 preg_match_all("#\n+{2}.*+#",$pera,$results);
print_r($results);

Do you have any idea how to get the second line from the paragraph?

Any help is much appriciated.

Thanks!


Solution

  • Only for the purpose demonstrated, explode is really better for performance, but if you do want/have to use regex, don't use preg_match_all. That makes it global but you don't need that so go with preg_match. Then, change the pattern:

    \n{2}.*
    

    This will match the second line including leading newline character.

    https://regex101.com/r/jA3dL9/1

    If you want to match w/o the newline, use a capturing group:

    \n{2}(.*)