I am trying to create a PCRE that will replace all of the hyphens in a document unless it is javascript or CSS or in an url, div, span tags.
I have tried many different things and have discovered so many "anomalies" in PCRE that I don't really know where to begin, but many of my questions would probably be better put into separate threads.
Here is the test script I am using:
In the above I am attempting to change all of the hyphens to short HTML dashes unless they are located between "st" and "te". The string might also be in the form of "-te-yy-st-" where all of the hyphens would be replaced or "-pstp --- kktep--p-" where the three hyphens in a row would not be replaced, because they are between "st" and "te".Code:<?php $text="-te-st-te-st-"; $text=preg_replace('/(.*?)(st.*?te)(.*?)/es',"str_replace('-','–','$1$3')",$text); echo "$text"; ?>
Here is some actual code/text I would like to test against:
Code:<style type="text/css"> .q { font-family:courier; border-style: solid; border-width: 3px; border-color: #525252; padding-left:25px; padding-right:25px; PADDING-TOP:20px; PADDING-BOTTOM:20px; color:#ffffff; background:#434343; margin: 12px 80px 12px 40px; } </style> <form name="count"> <input type="text" size="69" name="count2"> </form> <script> /* Count down until any date script- By JavaScript Kit (www.javascriptkit.com) Over 200+ free scripts here! */ //change the text below to reflect your own, var before="Christmas!" var current="Today is Christmas. Merry Christmas!" var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") function countdown(yr,m,d){ theyear=yr;themonth=m;theday=d var today=new Date() var todayy=today.getYear() if (todayy < 1000) todayy+=1900 var todaym=today.getMonth() var todayd=today.getDate() var todayh=today.getHours() var todaymin=today.getMinutes() var todaysec=today.getSeconds() var todaystring=montharray[todaym]+" "+todayd+", "+todayy+" "+todayh+":"+todaymin+":"+todaysec futurestring=montharray[m-1]+" "+d+", "+yr dd=Date.parse(futurestring)-Date.parse(todaystring) dday=Math.floor(dd/(60*60*1000*24)*1) dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1) dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1) dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1) if(dday==0&&dhour==0&&dmin==0&&dsec==1){ document.forms.count.count2.value=current return } else document.forms.count.count2.value="Only "+dday+ " days, "+dhour+" hours, "+dmin+" minutes, and "+dsec+" seconds left until "+before setTimeout("countdown(theyear,themonth,theday)",1000) } //enter the count down date using the format year/month/day countdown(2002,12,25) </script> <p align="center"><font face="arial" size="-2">This free script provided by</font><br> <font face="arial, helvetica" size="-2"><a href="http://javascriptkit.com">JavaScript Kit</a></font></p> <div class='q'><a href="http://www.marvel.com/universe/X-23">X-23</a> is a new character in the <span style="background-color:tan;">Marvel universe</span></div>
Edit: I reformatted this post to give better examples and to clarify what I am looking for.



Reply With Quote
Bookmarks