Saturday, November 22, 2014
   
Text Size
Login

Preg_Replace all strings between two tags

What?
For those of you who use Preg_Replace. Preg_replace is a function that uses regular expressions to search and replace a string.

Why?
Because my understanding with regular expressions is shady and varies from language to language, I've written this article as a quick reference point.

How?
Well you use this in your PHP scripts, the examples below are meant to help but feel free to comment if they do not:

Surround string (apostrophes) with red styling
Convert: this='a string'  »  this='a string'

  1.  $string_formatted = preg_replace ( '/\'([^\']+)\'/''<span style="color:red">$0</span>'$string_original ); 

Surround string (apostrophes) with red styling but ignore escaped apostrophes:
Convert: this='joe\'s string' » this='joe\'s string'

  1.  $string_formatted = str_replace('\\\'''\\\&#39;'$string_formatted);  // bit of a copout I know 
  2.  $string_formatted = preg_replace ( '/\'([^\']+)\'/''<span style="color:red">$0</span>'$string_formatted ); 


Surround string (apostrophes) with red styling and evaluate:
Convert: this='some <html> string' » this='some string'

  1.  $string_formatted = preg_replace ( '/\'([^\']+)\'/e''stripslashes(strip_tags("$0"))'$string_formatted );  // really important to suffix the expression with 'e' 
  2.  $string_formatted = preg_replace ( '/\'([^\']+)\'/''<span style="color:red">$0</span>'$string_formatted ); 


Surround string (backticks) with darkred styling
Convert: `mysql_reserved_word`=my_alias  »  `mysql_reserved_word`=my_alias

  1.  $string_formatted = preg_replace ( '/`([^`]+)`/''<span style="color:darkred">$0</span>'$string_original ); 

Replace contents between two tags (<pre></pre>)
Convert: my outside string <pre>is now inside</pre>  »  my outside string is now inside

  1.  $string_formatted = preg_replace('/<pre>(.*)</pre>/eis', "'<span style="color:red">'.'$1'.'</span>'", $string_original); 

Replace contents between two tags (<pre></pre>) INCLUSIVE
Convert: my outside string <pre>is now inside</pre>  »  my outside string <pre>is now inside</pre>

  1.  $string_formatted = preg_replace('/(<pre>)(.*)(</pre>)/eis', "'<span style="color:red">' . '$1' . '$2' . '$3' . '</span>'", $string_original); 

Replace contents between two strings
Convert: <!-- MY START STRING -->Hello World!<!-- MY END STRING -->  »  Hello World!

  1.  $startPoint = '<!-- MY START STRING -->'
  2.  $endPoint = '<!-- MY END STRING -->'
  3.  $string_formatted = preg_replace('#('.preg_quote($startPoint).')(.*)('.preg_quote($endPoint).')#si''$0'$string_original); 


Replace all @words
Convert: Hello @World » Hello @World

  1.  $string_formatted = preg_replace( '/@[a-z]+/i','<span style="color:red;">$0</span>'$string_original); 
  2.   
  3.  -- METHOD #2: equivalent using preg_match_all  
  4.  $matches = null; 
  5.  preg_match_all('/(?!b)(@w+b)/',$string_original,$matches); 
  6.  foreach ($matches as $match) { 
  7.       foreach ($match as $mystring) { 
  8.            $string_formatted = str_replace( $mystring'<span style="color:red;">'.$mystring.'</span>'$string_formatted);  
  9.       } 
  10.  } 


Replace all $wordpart1_wordpart2 (allow underscores)
Convert: Hello $New_World » Hello $New_World

  1.  $string_formatted = preg_replace( '/$[a-z_]+/i','<span style="color:red;">$0</span>'$string_original); 


Replace all words with suffixed character
Convert: Hello( World ) » Hello( World )

  1.  $string_formatted = preg_replace( '/[a-z]+(/i','<span style="color:red;">$0</span>'$string_original); 


Replace all words with suffixed character and html entity
Convert: Hello&nbsp;( World ) » Hello&nbsp;( World )

  1.  $string_formatted = preg_replace( '/[a-z_ -]+&nbsp;(/i','<span style="color:red;">$0</span>'$string_original); 


Anymore? Please leave a comment if I've missed some useful ones out.
Add Comment

Name:

Email:

Website:

Message:


Latest Posts

  • Convert to Proper Case in T-SQL

    • Tue 11-Nov-14
      Hi Brandon, An excellent point as I completely forgot about that one. I guess in the UK we don't get ...
      Joel L.  
    • Thu 06-Nov-14
      Thank you for this! One of the cases I'm going to try to adapt it for is addresses. In the US, we ...
      Brandon C.
  • SSIS: How to loop through multiple flat files as data sources

    • Thu 13-Nov-14
      Hey Mario, Looks like for each loop you set up at #5 will take care of that, doesn't matter if you ...
      Ramsey K.  
    • Sat 01-Nov-14
      Hi, thanks, bit not clear on #6, I still have file name from step #1
      Mario17
  • Windows 7: System Clock is constantly going out of sync

    • Sat 01-Nov-14
      Thank you..that solved my issue. Just wondering whether preventing my computer from synchronizing ...
      Ravi G.