|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 (permalink) |
|
Messages: n/a
Hébergeur: |
Hi everyone,
I want to highlight (bold) searchterms in text. For example, for all words starting with "ethyl": a) replace "ethyl" by "<b>ethyl</b>" b) replace "Ethyl" by "<b>Ethyl</b>" c) replace "ethylene" by "<b>ethylene</b>" d) but not "methyl" by "<b>methyl</b>" Now I use: $patterns[0] = "/ethyl/"; $replacements[0] = "<b>ethyl</b>"; $text = preg_replace($patterns, $replacements, $text); This works for a) and c), but not for b) and d). Any idea how to do this ? TIA, Cor |
|
|
|
#2 (permalink) |
|
Messages: n/a
Hébergeur: |
> > Hi everyone, > > > > I want to highlight (bold) searchterms in text. > > For example, for all words starting with "ethyl": > > a) replace "ethyl" by "<b>ethyl</b>" > > b) replace "Ethyl" by "<b>Ethyl</b>" > > c) replace "ethylene" by "<b>ethylene</b>" > > d) but not "methyl" by "<b>methyl</b>" > > > > Now I use: > > $patterns[0] = "/ethyl/"; > > $replacements[0] = "<b>ethyl</b>"; > > $text = preg_replace($patterns, $replacements, $text); > > > > This works for a) and c), but not for b) and d). > > Any idea how to do this ? > > > > TIA, Cor > > > > Thanks Deniz, > > I tried pattern /^ethyl/i but this does not highlight anything. > I also tried pattern /ethyl/i and this highlights all, but also methyl ... > Any suggestion ? > Yes, the i pattern modifier makes the search case-insensitive, which is what you want. The carat ^ means start of string, so would only word if the pattern was at the beginning of the line - not what you want. Try something like this: /(\s|>)ethyl(\s|<)/i The \s means whitespace so (\s|>) means only match if ethyl is preceded by whitespace or >, i.e. a closing tag. Alternatively, have a look at http://suda.co.uk/projects/SEHL/. Edward |
|
|
|
#3 (permalink) |
|
Messages: n/a
Hébergeur: |
----- Original Message ----- From: "Deniz Dizman (BST UGB)" <DENIZ.DIZMAN@fortis.com.tr> To: "C.R.Vegelin" <cr.vegelin@hetnet.nl>; "php-general@lists.php.nt" <php-general@lists.php.net> Sent: Thursday, September 20, 2007 10:38 AM Subject: RE: [php] highlighting searchterms as bold text try /^ethyl/i what you want is ignore case and pattern begins with -- dd > -----Original Message----- > From: C.R.Vegelin [mailto:cr.vegelin@hetnet.nl] > Sent: Thursday, September 20, 2007 1:31 PM > To: php-general@lists.php.nt > Subject: [php] highlighting searchterms as bold text > > Hi everyone, > > I want to highlight (bold) searchterms in text. > For example, for all words starting with "ethyl": > a) replace "ethyl" by "<b>ethyl</b>" > b) replace "Ethyl" by "<b>Ethyl</b>" > c) replace "ethylene" by "<b>ethylene</b>" > d) but not "methyl" by "<b>methyl</b>" > > Now I use: > $patterns[0] = "/ethyl/"; > $replacements[0] = "<b>ethyl</b>"; > $text = preg_replace($patterns, $replacements, $text); > > This works for a) and c), but not for b) and d). > Any idea how to do this ? > > TIA, Cor > Thanks Deniz, I tried pattern /^ethyl/i but this does not highlight anything. I also tried pattern /ethyl/i and this highlights all, but also methyl ... Any suggestion ? Cor |
|
|
|
#4 (permalink) |
|
Messages: n/a
Hébergeur: |
Hi,
Here's what you need: RegEx: /((\w+)?#SearchTermHere#(\w+)?)/i Of course, replace your #SearchTermHere# with what you need, i.e. /((\w+)?ethyl(\w+)?)/i Code sample: $_textToHighlight='ethyl Lorem Ethyl ipsum MeThYl dolor Ethylene sit'; $_search='/((\w+)?ethyl(\w+)?)/i'; $_replace='<b>\\1</b>'; $_highlightedText=preg_replace($_search,$_replace, $_textToHighlight); This should output: <b>ethyl</b> Lorem <b>Ethyl</b> ipsum <b>MeThYl</b> dolor <b>Ethylene</b> sit Hope it s, PuYa C.R.Vegelin wrote: > > ----- Original Message ----- From: "Deniz Dizman (BST UGB)" > <DENIZ.DIZMAN@fortis.com.tr> > To: "C.R.Vegelin" <cr.vegelin@hetnet.nl>; "php-general@lists.php.nt" > <php-general@lists.php.net> > Sent: Thursday, September 20, 2007 11:29 AM > Subject: RE: [php] highlighting searchterms as bold text > > > thats odd because the regex passes when I test it with this online tool: > http://samuelfullman.com/team/php/tools/regular_expression_tester_p2.php > > -- > dd > >> -----Original Message----- >> From: C.R.Vegelin [mailto:cr.vegelin@hetnet.nl] >> Sent: Thursday, September 20, 2007 1:59 PM >> To: Deniz Dizman (BST UGB); php-general@lists.php.nt >> Subject: Re: [php] highlighting searchterms as bold text >> >> >> ----- Original Message ----- >> From: "Deniz Dizman (BST UGB)" <DENIZ.DIZMAN@fortis.com.tr> >> To: "C.R.Vegelin" <cr.vegelin@hetnet.nl>; "php-general@lists.php.nt" >> <php-general@lists.php.net> >> Sent: Thursday, September 20, 2007 10:38 AM >> Subject: RE: [php] highlighting searchterms as bold text >> >> >> try /^ethyl/i >> what you want is ignore case and pattern begins with >> >> -- >> dd >> >> > -----Original Message----- >> > From: C.R.Vegelin [mailto:cr.vegelin@hetnet.nl] >> > Sent: Thursday, September 20, 2007 1:31 PM >> > To: php-general@lists.php.nt >> > Subject: [php] highlighting searchterms as bold text >> > >> > Hi everyone, >> > >> > I want to highlight (bold) searchterms in text. >> > For example, for all words starting with "ethyl": >> > a) replace "ethyl" by "<b>ethyl</b>" >> > b) replace "Ethyl" by "<b>Ethyl</b>" >> > c) replace "ethylene" by "<b>ethylene</b>" >> > d) but not "methyl" by "<b>methyl</b>" >> > >> > Now I use: >> > $patterns[0] = "/ethyl/"; >> > $replacements[0] = "<b>ethyl</b>"; >> > $text = preg_replace($patterns, $replacements, $text); >> > >> > This works for a) and c), but not for b) and d). >> > Any idea how to do this ? >> > >> > TIA, Cor >> > >> >> Thanks Deniz, >> >> I tried pattern /^ethyl/i but this does not highlight anything. >> I also tried pattern /ethyl/i and this highlights all, but >> also methyl ... >> Any suggestion ? >> >> Cor >> > Hi Deniz, > > I tried the referred regex tool as well, > and I get Bad Result for /^ethyl/i > and Good Result for /ethyl/i > > Cor |
|
|
|
#5 (permalink) |
|
Messages: n/a
Hébergeur: |
Sorry, I didn't read d) right (NOT Methyl),
here is teh new regex : /(\b#SearchTermHere#(\w+)?)/i The code sample is the same, replace regex, of course . Output should be : <b>ethyl</b> Lorem <b>Ethyl</b> ipsum MeThYl dolor <b>Ethylene</b> sit Cheers Puiu Hrenciuc wrote: > Hi, > > Here's what you need: > > RegEx: > > /((\w+)?#SearchTermHere#(\w+)?)/i > > Of course, replace your #SearchTermHere# with what you need, > i.e. /((\w+)?ethyl(\w+)?)/i > > Code sample: > > $_textToHighlight='ethyl Lorem Ethyl ipsum MeThYl dolor Ethylene sit'; > $_search='/((\w+)?ethyl(\w+)?)/i'; > $_replace='<b>\\1</b>'; > $_highlightedText=preg_replace($_search,$_replace, $_textToHighlight); > > This should output: > > <b>ethyl</b> Lorem <b>Ethyl</b> ipsum <b>MeThYl</b> dolor > <b>Ethylene</b> sit > > Hope it s, > PuYa > > C.R.Vegelin wrote: >> >> ----- Original Message ----- From: "Deniz Dizman (BST UGB)" >> <DENIZ.DIZMAN@fortis.com.tr> >> To: "C.R.Vegelin" <cr.vegelin@hetnet.nl>; "php-general@lists.php.nt" >> <php-general@lists.php.net> >> Sent: Thursday, September 20, 2007 11:29 AM >> Subject: RE: [php] highlighting searchterms as bold text >> >> >> thats odd because the regex passes when I test it with this online tool: >> http://samuelfullman.com/team/php/tools/regular_expression_tester_p2.php >> >> -- >> dd >> >>> -----Original Message----- >>> From: C.R.Vegelin [mailto:cr.vegelin@hetnet.nl] >>> Sent: Thursday, September 20, 2007 1:59 PM >>> To: Deniz Dizman (BST UGB); php-general@lists.php.nt >>> Subject: Re: [php] highlighting searchterms as bold text >>> >>> >>> ----- Original Message ----- >>> From: "Deniz Dizman (BST UGB)" <DENIZ.DIZMAN@fortis.com.tr> >>> To: "C.R.Vegelin" <cr.vegelin@hetnet.nl>; "php-general@lists.php.nt" >>> <php-general@lists.php.net> >>> Sent: Thursday, September 20, 2007 10:38 AM >>> Subject: RE: [php] highlighting searchterms as bold text >>> >>> >>> try /^ethyl/i >>> what you want is ignore case and pattern begins with >>> >>> -- >>> dd >>> >>> > -----Original Message----- >>> > From: C.R.Vegelin [mailto:cr.vegelin@hetnet.nl] >>> > Sent: Thursday, September 20, 2007 1:31 PM >>> > To: php-general@lists.php.nt >>> > Subject: [php] highlighting searchterms as bold text >>> > >>> > Hi everyone, >>> > >>> > I want to highlight (bold) searchterms in text. >>> > For example, for all words starting with "ethyl": >>> > a) replace "ethyl" by "<b>ethyl</b>" >>> > b) replace "Ethyl" by "<b>Ethyl</b>" >>> > c) replace "ethylene" by "<b>ethylene</b>" >>> > d) but not "methyl" by "<b>methyl</b>" >>> > >>> > Now I use: >>> > $patterns[0] = "/ethyl/"; >>> > $replacements[0] = "<b>ethyl</b>"; >>> > $text = preg_replace($patterns, $replacements, $text); >>> > >>> > This works for a) and c), but not for b) and d). >>> > Any idea how to do this ? >>> > >>> > TIA, Cor >>> > >>> >>> Thanks Deniz, >>> >>> I tried pattern /^ethyl/i but this does not highlight anything. >>> I also tried pattern /ethyl/i and this highlights all, but >>> also methyl ... >>> Any suggestion ? >>> >>> Cor >>> >> Hi Deniz, >> >> I tried the referred regex tool as well, >> and I get Bad Result for /^ethyl/i >> and Good Result for /ethyl/i >> >> Cor |
|
|
|
#6 (permalink) |
|
Messages: n/a
Hébergeur: |
On Thu, 2007-09-20 at 13:09 +0100, C.R.Vegelin wrote:
> ----- Original Message ----- > From: "Deniz Dizman (BST UGB)" <DENIZ.DIZMAN@fortis.com.tr> > To: "C.R.Vegelin" <cr.vegelin@hetnet.nl>; "php-general@lists.php.nt" > <php-general@lists.php.net> > Sent: Thursday, September 20, 2007 11:29 AM > Subject: RE: [php] highlighting searchterms as bold text > > > thats odd because the regex passes when I test it with this online tool: > http://samuelfullman.com/team/php/tools/regular_expression_tester_p2.php That makes it syntactically correct... but it tells you nothing about logic. > > -----Original Message----- > > From: C.R.Vegelin [mailto:cr.vegelin@hetnet.nl] > > Sent: Thursday, September 20, 2007 1:59 PM > > To: Deniz Dizman (BST UGB); php-general@lists.php.nt > > Subject: Re: [php] highlighting searchterms as bold text > > > > > > ----- Original Message ----- > > From: "Deniz Dizman (BST UGB)" <DENIZ.DIZMAN@fortis.com.tr> > > To: "C.R.Vegelin" <cr.vegelin@hetnet.nl>; "php-general@lists.php.nt" > > <php-general@lists.php.net> > > Sent: Thursday, September 20, 2007 10:38 AM > > Subject: RE: [php] highlighting searchterms as bold text > > > > > > try /^ethyl/i > > what you want is ignore case and pattern begins with > > > > -- > > dd > > > > > -----Original Message----- > > > From: C.R.Vegelin [mailto:cr.vegelin@hetnet.nl] > > > Sent: Thursday, September 20, 2007 1:31 PM > > > To: php-general@lists.php.nt > > > Subject: [php] highlighting searchterms as bold text > > > > > > Hi everyone, > > > > > > I want to highlight (bold) searchterms in text. > > > For example, for all words starting with "ethyl": > > > a) replace "ethyl" by "<b>ethyl</b>" > > > b) replace "Ethyl" by "<b>Ethyl</b>" > > > c) replace "ethylene" by "<b>ethylene</b>" > > > d) but not "methyl" by "<b>methyl</b>" > > > > > > Now I use: > > > $patterns[0] = "/ethyl/"; > > > $replacements[0] = "<b>ethyl</b>"; > > > $text = preg_replace($patterns, $replacements, $text); > > > > > > This works for a) and c), but not for b) and d). > > > Any idea how to do this ? > > > > > > TIA, Cor > > > > > > > Thanks Deniz, > > > > I tried pattern /^ethyl/i but this does not highlight anything. > > I also tried pattern /ethyl/i and this highlights all, but > > also methyl ... > > Any suggestion ? > > > > Cor > > > Hi Deniz, > > I tried the referred regex tool as well, > and I get Bad Result for /^ethyl/i > and Good Result for /ethyl/i That's because the ^ character matches the beginning of a line and so it would only match ethyl when it is the first word. As some others pointed out, you really want to match the word boundary so that you match ethyl when it is the beginning of a word. Cheers, Rob. -- .................................................. .......... SwarmBuy.com - http://www.swarmbuy.com Leveraging the buying power of the masses! .................................................. .......... |
|
|
|
#7 (permalink) |
|
Messages: n/a
Hébergeur: |
----- Original Message ----- From: "Deniz Dizman (BST UGB)" <DENIZ.DIZMAN@fortis.com.tr> To: "C.R.Vegelin" <cr.vegelin@hetnet.nl>; "php-general@lists.php.nt" <php-general@lists.php.net> Sent: Thursday, September 20, 2007 11:29 AM Subject: RE: [php] highlighting searchterms as bold text thats odd because the regex passes when I test it with this online tool: http://samuelfullman.com/team/php/tools/regular_expression_tester_p2.php -- dd > -----Original Message----- > From: C.R.Vegelin [mailto:cr.vegelin@hetnet.nl] > Sent: Thursday, September 20, 2007 1:59 PM > To: Deniz Dizman (BST UGB); php-general@lists.php.nt > Subject: Re: [php] highlighting searchterms as bold text > > > ----- Original Message ----- > From: "Deniz Dizman (BST UGB)" <DENIZ.DIZMAN@fortis.com.tr> > To: "C.R.Vegelin" <cr.vegelin@hetnet.nl>; "php-general@lists.php.nt" > <php-general@lists.php.net> > Sent: Thursday, September 20, 2007 10:38 AM > Subject: RE: [php] highlighting searchterms as bold text > > > try /^ethyl/i > what you want is ignore case and pattern begins with > > -- > dd > > > -----Original Message----- > > From: C.R.Vegelin [mailto:cr.vegelin@hetnet.nl] > > Sent: Thursday, September 20, 2007 1:31 PM > > To: php-general@lists.php.nt > > Subject: [php] highlighting searchterms as bold text > > > > Hi everyone, > > > > I want to highlight (bold) searchterms in text. > > For example, for all words starting with "ethyl": > > a) replace "ethyl" by "<b>ethyl</b>" > > b) replace "Ethyl" by "<b>Ethyl</b>" > > c) replace "ethylene" by "<b>ethylene</b>" > > d) but not "methyl" by "<b>methyl</b>" > > > > Now I use: > > $patterns[0] = "/ethyl/"; > > $replacements[0] = "<b>ethyl</b>"; > > $text = preg_replace($patterns, $replacements, $text); > > > > This works for a) and c), but not for b) and d). > > Any idea how to do this ? > > > > TIA, Cor > > > > Thanks Deniz, > > I tried pattern /^ethyl/i but this does not highlight anything. > I also tried pattern /ethyl/i and this highlights all, but > also methyl ... > Any suggestion ? > > Cor > Hi Deniz, I tried the referred regex tool as well, and I get Bad Result for /^ethyl/i and Good Result for /ethyl/i Cor |
|
|
|
#8 (permalink) |
|
Messages: n/a
Hébergeur: |
----- Original Message -----
From: "Deniz Dizman (BST UGB)" <DENIZ.DIZMAN@fortis.com.tr> To: "C.R.Vegelin" <cr.vegelin@hetnet.nl>; "php-general@lists.php.nt" <php-general@lists.php.net> Sent: Thursday, September 20, 2007 12:25 PM Subject: RE: [php] highlighting searchterms as bold text you probably have some characters before/after the phrase that prevents the match. This should do it: (i hope) /(\S|\s)*\bethyl\b(\S|\s)*/i -- dd > -----Original Message----- > From: C.R.Vegelin [mailto:cr.vegelin@hetnet.nl] > Sent: Thursday, September 20, 2007 3:09 PM > To: Deniz Dizman (BST UGB); php-general@lists.php.nt > Subject: Re: [php] highlighting searchterms as bold text > > > ----- Original Message ----- > From: "Deniz Dizman (BST UGB)" <DENIZ.DIZMAN@fortis.com.tr> > To: "C.R.Vegelin" <cr.vegelin@hetnet.nl>; "php-general@lists.php.nt" > <php-general@lists.php.net> > Sent: Thursday, September 20, 2007 11:29 AM > Subject: RE: [php] highlighting searchterms as bold text > > > thats odd because the regex passes when I test it with this > online tool: > http://samuelfullman.com/team/php/tools/regular_expression_tes > ter_p2.php > > -- > dd > > > -----Original Message----- > > From: C.R.Vegelin [mailto:cr.vegelin@hetnet.nl] > > Sent: Thursday, September 20, 2007 1:59 PM > > To: Deniz Dizman (BST UGB); php-general@lists.php.nt > > Subject: Re: [php] highlighting searchterms as bold text > > > > > > ----- Original Message ----- > > From: "Deniz Dizman (BST UGB)" <DENIZ.DIZMAN@fortis.com.tr> > > To: "C.R.Vegelin" <cr.vegelin@hetnet.nl>; "php-general@lists.php.nt" > > <php-general@lists.php.net> > > Sent: Thursday, September 20, 2007 10:38 AM > > Subject: RE: [php] highlighting searchterms as bold text > > > > > > try /^ethyl/i > > what you want is ignore case and pattern begins with > > > > -- > > dd > > > > > -----Original Message----- > > > From: C.R.Vegelin [mailto:cr.vegelin@hetnet.nl] > > > Sent: Thursday, September 20, 2007 1:31 PM > > > To: php-general@lists.php.nt > > > Subject: [php] highlighting searchterms as bold text > > > > > > Hi everyone, > > > > > > I want to highlight (bold) searchterms in text. > > > For example, for all words starting with "ethyl": > > > a) replace "ethyl" by "<b>ethyl</b>" > > > b) replace "Ethyl" by "<b>Ethyl</b>" > > > c) replace "ethylene" by "<b>ethylene</b>" > > > d) but not "methyl" by "<b>methyl</b>" > > > > > > Now I use: > > > $patterns[0] = "/ethyl/"; > > > $replacements[0] = "<b>ethyl</b>"; > > > $text = preg_replace($patterns, $replacements, $text); > > > > > > This works for a) and c), but not for b) and d). > > > Any idea how to do this ? > > > > > > TIA, Cor > > > > > > > Thanks Deniz, > > > > I tried pattern /^ethyl/i but this does not highlight anything. > > I also tried pattern /ethyl/i and this highlights all, but > > also methyl ... > > Any suggestion ? > > > > Cor > > > Hi Deniz, > > I tried the referred regex tool as well, > and I get Bad Result for /^ethyl/i > and Good Result for /ethyl/i > > Cor > > Hi Deniz, Edward, Mike, Thanks for your suggestions. Deniz, pattern /(\S|\s)*\bethyl\b(\S|\s)*/i makes from any line containing ethyl, such as Undenatured ethyl alcohol lines containing only: >ethyl Edward, pattern /(\s|>)ethyl(\s|<)/i makes from: Undenatured ethyl alcohol Undenaturedethylalcohol (stripping spaces). I will take a look at http://suda.co.uk/projects/SEHL/. Mike, the \W character makes from Undenatured ethyl alcohol Undenaturedethylalcohol (stripping spaces). The \b character makes: Undenatured ethyl alcohol (okay) the word methyl is unchanged (okay) but ethylene keeps also unchanged ... Thanks anyway ! Cor |
|
![]() |
| Outils de la discussion | |
|
|