<?php
/**
* Simple implementation, feel free to use something more complicated or robust
* if your situation requires it:
* http://stackoverflow.com/questions/3542818/remove-accents-without-using-iconv/
*/
function stripAccents( $p_sSubject ) {
$sSubject = ( string) $p_sSubject ;
, utf8_decode ( 'àáâãäåçèéêëìíîïñòóôõöøùúûüýÿÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝ' ) , 'aaaaaaceeeeiiiinoooooouuuuyyAAAAAACEEEEIIIINOOOOOOUUUUY'
) ;
return $sSubject ;
}
function emphasiseWord( $p_sSubject , $p_sSearchTerm ) {
/*
* The part in the regular expression that read "\p{L}\p{M}" makes sure we
* also get all the multibyte characters.
* You can learn more about unicode and regular expressions at:
* http://w...content-available-to-author-only...s.info/unicode.html
*/
$aSubjects = preg_split ( '#([^a-z0-9\p{L}\p{M}]+)#iu' , $p_sSubject , null , PREG_SPLIT_DELIM_CAPTURE
) ;
foreach ( $aSubjects as $t_iKey => $t_sSubject ) {
$sSubject = stripAccents( $t_sSubject ) ;
if ( stripos ( $sSubject , $p_sSearchTerm ) !== false || mb_stripos ( $t_sSubject , $p_sSearchTerm ) !== false ) { $aSubjects [ $t_iKey ] = '<<<' . $t_sSubject . '>>>' ;
}
}
$sSubject = implode ( '' , $aSubjects ) ;
return $sSubject ;
}
// Test
'goo' => 'I love Google to make my searches, but I`m starting to worry about privacy.'
, 'peo' => 'people, People, PEOPLE, peOple, people!, people., people?, "people, people" péo'
, 'péo' => 'people, People, PEOPLE, peOple, people!, people., people?, "people, people" péo'
, 'gen' => '"gente", "inteligente", "VAGENS", and "Gente" ...vocês da física que passam o dia protegendo...'
, 'voce' => '...vocês da física que passam o dia protegendo...'
, 'o' => 'Characters like æ,ø,å,Æ,Ø and Å are used in Denmark, Sweden and Norway'
, 'ø' => 'Characters like æ,ø,å,Æ,Ø and Å are used in Denmark, Sweden and Norway'
, 'ae' => 'Characters like æ,ø,å,Æ,Ø and Å are used in Denmark, Sweden and Norway'
, 'Æ' => 'Characters like æ,ø,å,Æ,Ø and Å are used in Denmark, Sweden and Norway'
) ;
$sContent = '' ;
foreach ( $aTest as $t_sSearchTerm => $t_sSubject ) {
$sContent .= $t_sSearchTerm . "\n \t " . emphasiseWord( $t_sSubject , $t_sSearchTerm ) . "\n " ;
}
echo $sContent ;
#EOF
PD9waHAKCi8qKgogKiBTaW1wbGUgaW1wbGVtZW50YXRpb24sIGZlZWwgZnJlZSB0byB1c2Ugc29tZXRoaW5nIG1vcmUgY29tcGxpY2F0ZWQgb3Igcm9idXN0CiAqIGlmIHlvdXIgc2l0dWF0aW9uIHJlcXVpcmVzIGl0OiAKICogICAgICBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM1NDI4MTgvcmVtb3ZlLWFjY2VudHMtd2l0aG91dC11c2luZy1pY29udi8KICovCiAgICBmdW5jdGlvbiBzdHJpcEFjY2VudHMoJHBfc1N1YmplY3QpIHsKICAgICAgICAkc1N1YmplY3QgPSAoc3RyaW5nKSAkcF9zU3ViamVjdDsKCiAgICAgICAgJHNTdWJqZWN0ID0gc3RyX3JlcGxhY2UoJ8OmJywgJ2FlJywgJHNTdWJqZWN0KTsKICAgICAgICAkc1N1YmplY3QgPSBzdHJfcmVwbGFjZSgnw4YnLCAnQUUnLCAkc1N1YmplY3QpOwoKICAgICAgICAkc1N1YmplY3QgPSBzdHJ0cigKICAgICAgICAgICAgICB1dGY4X2RlY29kZSgkc1N1YmplY3QpCiAgICAgICAgICAgICwgdXRmOF9kZWNvZGUoJ8Ogw6HDosOjw6TDpcOnw6jDqcOqw6vDrMOtw67Dr8Oxw7LDs8O0w7XDtsO4w7nDusO7w7zDvcO/w4DDgcOCw4PDhMOFw4fDiMOJw4rDi8OMw43DjsOPw5HDksOTw5TDlcOWw5jDmcOaw5vDnMOdJykKICAgICAgICAgICAgLCAnYWFhYWFhY2VlZWVpaWlpbm9vb29vb3V1dXV5eUFBQUFBQUNFRUVFSUlJSU5PT09PT09VVVVVWScKICAgICAgICApOwoKCiAgICAgICAgcmV0dXJuICRzU3ViamVjdDsKICAgIH0KCmZ1bmN0aW9uIGVtcGhhc2lzZVdvcmQoJHBfc1N1YmplY3QsICRwX3NTZWFyY2hUZXJtKXsKICAgIC8qCiAgICAgKiBUaGUgcGFydCBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uIHRoYXQgcmVhZCAiXHB7TH1ccHtNfSIgbWFrZXMgc3VyZSB3ZSAKICAgICAqIGFsc28gZ2V0IGFsbCB0aGUgbXVsdGlieXRlIGNoYXJhY3RlcnMuCiAgICAgKiBZb3UgY2FuIGxlYXJuIG1vcmUgYWJvdXQgdW5pY29kZSBhbmQgcmVndWxhciBleHByZXNzaW9ucyBhdDoKICAgICAqICAgICAgICAgIGh0dHA6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5zLmluZm8vdW5pY29kZS5odG1sCiAgICAgKi8KICAgICRhU3ViamVjdHMgPSBwcmVnX3NwbGl0KCcjKFteYS16MC05XHB7TH1ccHtNfV0rKSNpdScsICRwX3NTdWJqZWN0LCBudWxsLCBQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUpOwoKICAgIGZvcmVhY2goJGFTdWJqZWN0cyBhcyAkdF9pS2V5ID0+ICR0X3NTdWJqZWN0KXsKICAgICAgICAkc1N1YmplY3QgPSBzdHJpcEFjY2VudHMoJHRfc1N1YmplY3QpOwogICAgICAgIAogICAgICAgIGlmKHN0cmlwb3MoJHNTdWJqZWN0LCAkcF9zU2VhcmNoVGVybSkgIT09IGZhbHNlIHx8IG1iX3N0cmlwb3MoJHRfc1N1YmplY3QsICRwX3NTZWFyY2hUZXJtKSAhPT0gZmFsc2UpewogICAgICAgICAgICAkYVN1YmplY3RzWyR0X2lLZXldID0gJzw8PCcgLiAkdF9zU3ViamVjdCAuICc+Pj4nOwogICAgICAgIH0KICAgIH0KCiAgICAkc1N1YmplY3QgPSBpbXBsb2RlKCcnLCAkYVN1YmplY3RzKTsKICAgIAogICAgcmV0dXJuICRzU3ViamVjdDsKfQoKCi8vIFRlc3QKJGFUZXN0ID0gYXJyYXkoCiAgICAgICdnb28nID0+ICdJIGxvdmUgR29vZ2xlIHRvIG1ha2UgbXkgc2VhcmNoZXMsIGJ1dCBJYG0gc3RhcnRpbmcgdG8gd29ycnkgYWJvdXQgcHJpdmFjeS4nCiAgICAsICdwZW8nID0+ICdwZW9wbGUsIFBlb3BsZSwgUEVPUExFLCBwZU9wbGUsIHBlb3BsZSEsIHBlb3BsZS4sIHBlb3BsZT8sICJwZW9wbGUsIHBlb3BsZSIgcMOpbycKICAgICwgJ3DDqW8nID0+ICdwZW9wbGUsIFBlb3BsZSwgUEVPUExFLCBwZU9wbGUsIHBlb3BsZSEsIHBlb3BsZS4sIHBlb3BsZT8sICJwZW9wbGUsIHBlb3BsZSIgcMOpbycKICAgICwgJ2dlbicgPT4gJyJnZW50ZSIsICJpbnRlbGlnZW50ZSIsICJWQUdFTlMiLCBhbmQgIkdlbnRlIiAuLi52b2PDqnMgZGEgZsOtc2ljYSBxdWUgcGFzc2FtIG8gZGlhIHByb3RlZ2VuZG8uLi4nCiAgICAsICd2b2NlJyA9PiAnLi4udm9jw6pzIGRhIGbDrXNpY2EgcXVlIHBhc3NhbSBvIGRpYSBwcm90ZWdlbmRvLi4uJwogICAgLCAnbycgPT4gJ0NoYXJhY3RlcnMgbGlrZSDDpizDuCzDpSzDhizDmCBhbmQgw4UgYXJlIHVzZWQgaW4gRGVubWFyaywgU3dlZGVuIGFuZCBOb3J3YXknCiAgICAsICfDuCcgPT4gJ0NoYXJhY3RlcnMgbGlrZSDDpizDuCzDpSzDhizDmCBhbmQgw4UgYXJlIHVzZWQgaW4gRGVubWFyaywgU3dlZGVuIGFuZCBOb3J3YXknCiAgICAsICdhZScgPT4gJ0NoYXJhY3RlcnMgbGlrZSDDpizDuCzDpSzDhizDmCBhbmQgw4UgYXJlIHVzZWQgaW4gRGVubWFyaywgU3dlZGVuIGFuZCBOb3J3YXknCiAgICAsICfDhicgPT4gJ0NoYXJhY3RlcnMgbGlrZSDDpizDuCzDpSzDhizDmCBhbmQgw4UgYXJlIHVzZWQgaW4gRGVubWFyaywgU3dlZGVuIGFuZCBOb3J3YXknCik7Cgokc0NvbnRlbnQgPSAnJzsKZm9yZWFjaCgkYVRlc3QgYXMgJHRfc1NlYXJjaFRlcm0gPT4gJHRfc1N1YmplY3QpewogICAgJHNDb250ZW50IC49ICR0X3NTZWFyY2hUZXJtIC4gIlxuXHQiIC4gZW1waGFzaXNlV29yZCgkdF9zU3ViamVjdCwgJHRfc1NlYXJjaFRlcm0pIC4gIlxuIjsKfQoKZWNobyAkc0NvbnRlbnQ7CgojRU9G
stdout
goo
I love <<<Google>>> to make my searches, but I`m starting to worry about privacy.
peo
<<<people>>>, <<<People>>>, <<<PEOPLE>>>, <<<peOple>>>, <<<people>>>!, <<<people>>>., <<<people>>>?, "<<<people>>>, <<<people>>>" <<<péo>>>
péo
people, People, PEOPLE, peOple, people!, people., people?, "people, people" <<<péo>>>
gen
"<<<gente>>>", "<<<inteligente>>>", "<<<VAGENS>>>", and "<<<Gente>>>" ...vocês da física que passam o dia <<<protegendo>>>...
voce
...<<<vocês>>> da física que passam o dia protegendo...
o
Characters like æ,<<<ø>>>,å,Æ,<<<Ø>>> and Å are used in Denmark, Sweden and <<<Norway>>>
ø
Characters like æ,<<<ø>>>,å,Æ,Ø and Å are used in Denmark, Sweden and Norway
ae
Characters like <<<æ>>>,ø,å,<<<Æ>>>,Ø and Å are used in Denmark, Sweden and Norway
Æ
Characters like æ,ø,å,<<<Æ>>>,Ø and Å are used in Denmark, Sweden and Norway