Hi

I'm trying to match tables rows in some HTML code. When I use a utility for Mac OS X that I downloaded, called RegExTest to test the expression, it works great. With PHP preg_match_all, it does not work.

$string = "<TR>
<TH COLSPAN="20" CLASS="ddtitle" scope="colgroup" >African Studies</TH>
</TR>
<TR>
<TH CLASS="ddheader" scope="col" >Select</TH>
<TH CLASS="ddheader" scope="col" ><ACRONYM title = "Course Reference Number">CRN</ACRONYM></TH>
<TH CLASS="ddheader" scope="col" ><ABBR title = Subject>Subj</ABBR></TH>
<TH CLASS="ddheader" scope="col" ><ABBR title = Course>Crse</ABBR></TH>

<TH CLASS="ddheader" scope="col" ><ABBR title = Section>Sec</ABBR></TH>
<TH CLASS="ddheader" scope="col" ><ABBR title = Type>Type</ABBR></TH>
<TH CLASS="ddheader" scope="col" ><ABBR title = "Credit Hours">Credits/CE Units</ABBR></TH>
<TH CLASS="ddheader" scope="col" >Title</TH>
<TH CLASS="ddheader" scope="col" >Days</TH>
<TH CLASS="ddheader" scope="col" >Time</TH>
<TH CLASS="ddheader" scope="col" ><ABBR title = "Section Capacity">Cap</ABBR></TH>
<TH CLASS="ddheader" scope="col" ><ABBR title = "Section Actual">Act</ABBR></TH>
<TH CLASS="ddheader" scope="col" ><ABBR title = "Section Remaining">Rem</ABBR></TH>

<TH CLASS="ddheader" scope="col" >Instructor</TH>
<TH CLASS="ddheader" scope="col" >Date (<ABBR title = "month month">MM</ABBR>/<ABBR title = "day day">DD</ABBR>)</TH>
<TH CLASS="ddheader" scope="col" >Location</TH>
<TH CLASS="ddheader" scope="col" >Status</TH>
</TR>
<TR>
<TD CLASS="dddefault">
<INPUT TYPE="checkbox" NAME="sel_crn" VALUE="6680 200601" ID="action_id1">
<LABEL for=action_id1><SPAN class=fieldlabeltextinvisible>add to worksheet</SPAN></LABEL>

<INPUT TYPE="hidden" NAME="assoc_term_in" VALUE="200601">
</TD>
<TD CLASS="dddefault"><A HREF="/pls/mcgp/bwckschd.p_disp_listcrse?term_in=200601&amp;subj_in=AFRI&amp;crse_in=481&amp;crn_in=6680&amp;search_mode_in=NON_NT" onMouseOver="window.status='Detail';  return true" onFocus="window.status='Detail';  return true" onMouseOut="window.status='';  return true"onBlur="window.status='';  return true">6680</A></TD>
<TD CLASS="dddefault">AFRI</TD>
<TD CLASS="dddefault">481</TD>
<TD CLASS="dddefault">001</TD>
<TD CLASS="dddefault">Topics Course</TD>
<TD CLASS="dddefault">3.000</TD>
<TD CLASS="dddefault">Special Topics.</TD>
<TD COLSPAN="2" CLASS="dddefault"><ABBR title = "To Be Announced">TBA</ABBR></TD>

<TD CLASS="dddefault">19</TD>
<TD CLASS="dddefault">12</TD>
<TD CLASS="dddefault">7</TD>
<TD CLASS="dddefault"><ABBR title = "To Be Announced">TBA</ABBR></TD>
<TD CLASS="dddefault">01/03-04/10</TD>
<TD CLASS="dddefault"><ABBR title = "To Be Announced">TBA</ABBR></TD>
<TD CLASS="dddefault">Active</TD>
</TR>
<TR>
<TD COLSPAN="20" CLASS="dddefault">&nbsp;</TD>

</TR>
<TR>
<TD CLASS="dddefault">
<INPUT TYPE="checkbox" NAME="sel_crn" VALUE="2066 200601" ID="action_id3">
<LABEL for=action_id3><SPAN class=fieldlabeltextinvisible>add to worksheet</SPAN></LABEL>
<INPUT TYPE="hidden" NAME="assoc_term_in" VALUE="200601">
</TD>
<TD CLASS="dddefault"><A HREF="/pls/mcgp/bwckschd.p_disp_listcrse?term_in=200601&amp;subj_in=AFRI&amp;crse_in=598&amp;crn_in=2066&amp;search_mode_in=NON_NT" onMouseOver="window.status='Detail';  return true" onFocus="window.status='Detail';  return true" onMouseOut="window.status='';  return true"onBlur="window.status='';  return true">2066</A></TD>
<TD CLASS="dddefault">AFRI</TD>
<TD CLASS="dddefault">598</TD>
<TD CLASS="dddefault">001</TD>
<TD CLASS="dddefault">Seminar</TD>

<TD CLASS="dddefault">3.000</TD>
<TD CLASS="dddefault">Research Seminar in African Studies.</TD>
<TD CLASS="dddefault">T</TD>
<TD NOWRAP CLASS="dddefault">01:05 PM-02:55 PM</TD>
<TD CLASS="dddefault">18</TD>
<TD CLASS="dddefault">0</TD>
<TD CLASS="dddefault">18</TD>
<TD CLASS="dddefault"><ABBR title = "To Be Announced">TBA</ABBR></TD>
<TD CLASS="dddefault">01/03-04/10</TD>

<TD CLASS="dddefault"><ABBR title = "To Be Announced">TBA</ABBR></TD>
<TD CLASS="dddefault">Cancelled</TD>
</TR>"

preg_match_all("/(<TR>)(.*?)(<\/TR>)/", $string, $matches);

Doesn't work.

What gives?

Thanks,
Alexandre

    /(<TR>)(.*?)(<\/TR>)/

    .doesn't match a newline unless you tell it to (by putting s on the end of the expression, after the /).

      Write a Reply...