Afficher un message
Vieux 20/09/2007, 15h42   #10
C.R.Vegelin
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: [PHP] highlighting searchterms as bold text

----- Original Message -----
From: "Puiu Hrenciuc" <hpuiu@xentra.ro>
To: <php-general@lists.php.net>
Sent: Thursday, September 20, 2007 12:56 PM
Subject: Re: [php] highlighting searchterms as bold text


> 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

>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

Thanks Puiu,

I tested your regex with the code below.
However, it didn't work.
Maybe I'm missing something ...
To test it, change the $pattern setting.

<?php
$term = "ethyl";
$text = "Ethylene, ethyl and methyl are different things.";
$pattern = "/(\b#" . $term . "#(\w+)?)/i";
$replacement = "<b>" . $term . "</b>";
// or: $replacement = "<b>\\1</b>";
echo "before: " . $text, "<br />";
$text = preg_replace($pattern, $replacement, $text);
echo "after: " . $text, "<br />";

echo "wanted:<br /><b>Ethyl</b>ene, <b>ethyl</b> and methyl are different
things.", "<br />";
echo "or:<br /><b>ethyl</b>ene, <b>ethyl</b> and methyl are different
things.", "<br />";
?>

Regards, Cor
  Réponse avec citation
 
Page generated in 0,07739 seconds with 9 queries