Solved

PHP str_replace regex (simple wildcard)

Posted on 2011-09-20
9
492 Views
Last Modified: 2012-05-12
I want to delete all occurrences of the following in a large string:

<a href='#' class='calendarInquiryDate'  onclick="updateArrivalDate('09/21/2011');  return false;" >

Open in new window


WITH having a wildcard for the date (which is well-formed (machine-generated))

thus (if * is wildcard)  

<a href='#' class='calendarInquiryDate'  onclick="updateArrivalDate('*');  return false;" >

Open in new window

 
0
Comment
Question by:willsherwood
  • 5
  • 4
9 Comments
 
LVL 35

Accepted Solution

by:
Terry Woods earned 500 total points
ID: 36570275
$string = preg_replace("@<a href='#' class='calendarInquiryDate'  onclick=\"updateArrivalDate('[^']*');  return false;\" >@","",$string);
0
 
LVL 35

Expert Comment

by:Terry Woods
ID: 36570295
The preg_replace function uses Perl compatible regular expressions, which allows you to use the wildcard as required.
0
 

Author Closing Comment

by:willsherwood
ID: 36570340
great, thanks!!
0
Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

 

Author Comment

by:willsherwood
ID: 36570557
Follow-up help requested.
The PHP preg call worked perfectly up to a point, which i cannot figure out "what's different"  past that point- maybe a fresh set of eyes :).

ORIGINAL STRING CONTENT
<td class='mini-cal-day ' align='center' ><a href='#' class='calendarInquiryDate'  onclick="updateArrivalDate('09/19/2011');  return false;" >19</a></td>
<td class='mini-cal-day ' align='center' ><a href='#' class='calendarInquiryDate'  onclick="updateArrivalDate('09/20/2011');  return false;" >20</a></td>
<td class='mini-cal-day ' align='center' ><a href='#' class='calendarInquiryDate'  onclick="updateArrivalDate('09/21/2011');  return false;" >21</a></td>
<td class='mini-cal-day ' align='center' ><a href='#' class='calendarInquiryDate'  onclick="updateArrivalDate('09/22/2011');  return false;" >22</a></td>
<td class='mini-cal-day ' align='center' ><a href='#' class='calendarInquiryDate'  onclick="updateArrivalDate('09/23/2011');  return false;" >23</a></td>

Open in new window


RESULT AFTER PROCESSING THRU preg_replace

<td class='mini-cal-day ' align='center' >19</td>
<td class='mini-cal-day ' align='center' >20</td>
<td class='mini-cal-day ' align='center' ><a href='#' class='calendarInquiryDate'  onclick="updateArrivalDate('09/21/2011');  return false;" >21</td>
<td class='mini-cal-day ' align='center' ><a href='#' class='calendarInquiryDate'  onclick="updateArrivalDate('09/22/2011');  return false;" >22</td>
<td class='mini-cal-day ' align='center' ><a href='#' class='calendarInquiryDate'  onclick="updateArrivalDate('09/23/2011');  return false;" >23</td>

Open in new window


Thus the (calendar dates)  19 and 20  <a href>  tags were removed
but 21 and thereafter (many more weeks not shown here too)

(I have a sep simple str_replace call to get rid of </a> (that was easy)  )

any suggestions?   it's very close to completely working.

thanks!
0
 

Author Comment

by:willsherwood
ID: 36570562
p.s. the "original" html is machine-generated (not by me), and maybe it has some hidden characters in it?  that is causing a mismatch.

but ALL the rest of the calendar weeks from that point on (9/21/2011)   have the same result (tag not deleted)
0
 
LVL 35

Expert Comment

by:Terry Woods
ID: 36570571
Could we relax the pattern so it just looks for an a tag containing:
class='calendarInquiryDate'
0
 
LVL 35

Expert Comment

by:Terry Woods
ID: 36570597
eg this is a lot more flexible:

$string = preg_replace("@<a[^>]*class\s*=\s*'calendarInquiryDate'[^>]*>@s","",$string);
0
 

Author Comment

by:willsherwood
ID: 36570603
yes any relaxed pattern should work - there are no other tags in the string
0
 

Author Comment

by:willsherwood
ID: 36570646
perfect, all set.
again, thanks!
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This article discusses how to create an extensible mechanism for linked drop downs.
3 proven steps to speed up Magento powered sites. The article focus is on optimizing time to first byte (TTFB), full page caching and configuring server for optimal performance.
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

792 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question