Solved

PHP str_replace regex (simple wildcard)

Posted on 2011-09-20
9
488 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
 

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
What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

 

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

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Popularity Can Be Measured Sometimes we deal with questions of popularity, and we need a way to collect opinions from our clients.  This article shows a simple teaching example of how we might elect a favorite color by letting our clients vote for …
This article discusses how to create an extensible mechanism for linked drop downs.
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

744 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

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now