• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 508
  • Last Modified:

PHP str_replace regex (simple wildcard)

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
willsherwood
Asked:
willsherwood
  • 5
  • 4
1 Solution
 
Terry WoodsIT GuruCommented:
$string = preg_replace("@<a href='#' class='calendarInquiryDate'  onclick=\"updateArrivalDate('[^']*');  return false;\" >@","",$string);
0
 
Terry WoodsIT GuruCommented:
The preg_replace function uses Perl compatible regular expressions, which allows you to use the wildcard as required.
0
 
willsherwoodAuthor Commented:
great, thanks!!
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
willsherwoodAuthor Commented:
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
 
willsherwoodAuthor Commented:
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
 
Terry WoodsIT GuruCommented:
Could we relax the pattern so it just looks for an a tag containing:
class='calendarInquiryDate'
0
 
Terry WoodsIT GuruCommented:
eg this is a lot more flexible:

$string = preg_replace("@<a[^>]*class\s*=\s*'calendarInquiryDate'[^>]*>@s","",$string);
0
 
willsherwoodAuthor Commented:
yes any relaxed pattern should work - there are no other tags in the string
0
 
willsherwoodAuthor Commented:
perfect, all set.
again, thanks!
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 5
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now