fork(1) download
  1. <?php
  2.  
  3. $s = "he has a ferrari and ferrari 2 and what not.";
  4. $replace = array (
  5. "ferrari" => '<a href="x">ferrari</a>',
  6. "ferrari 2" => '<a href="x">ferrari 2</a>'
  7. );
  8. $keys = array_map('strlen', array_keys($replace));
  9. array_multisort($keys, SORT_DESC, $replace);
  10.  
  11. $pat = '~' . implode("|", array_keys($replace)) . '~';
  12. echo $pat . "\n";
  13.  
  14. $res = preg_replace_callback($pat, function($m) use ($replace) {
  15. return isset($replace[$m[0]]) ? $replace[$m[0]] : $m[0];
  16. }, $s);
  17. echo $res;
Success #stdin #stdout 0.01s 52488KB
stdin
Standard input is empty
stdout
~ferrari 2|ferrari~
he has a <a href="x">ferrari</a> and <a href="x">ferrari 2</a> and what not.