@ 2014-01-13T00:06:04Z <?php
$message = "This is a string using the terms? Wait here's one\n abukuma kai\nabukuma-kai\nabukuma\nabukuma\nkai abukuma abukuma kai";
$search = array(
'abukuma kai',
'abukuma'
);
$replacements = array(
'<a href="http://kancolle.wikia.com/wiki/Abukuma#Upgrade" class="screenshot" rel="ship/Abukuma_Kai.png" style="color:#0073e6; font-weight:bold; border-bottom: 1px #0073e6 dashed;"><p id="yosup">Abukuma Kai</p></a>',
'<a href="http://kancolle.wikia.com/wiki/Abukuma#Basic" class="screenshot" rel="ship/Abukuma.png" style="color:#0073e6; font-weight:bold; border-bottom: 1px #0073e6 dashed;">Abukuma</a>'
);
function replaceStrings($haystack, $needle, $replacement, $offset = 0) {
if (count($needle) != count($replacement)) {
throw new \InvalidArgumentException('Needle length must match replacement length');
}
$regexpDelimiter = '/';
$wordDelimiter = '[-\s_]';
// Create the regexp
if (is_array($needle)) {
$massagedNeedles = array_map(
function($s) use($regexpDelimiter, $wordDelimiter) {
$s = preg_quote($s, $regexpDelimiter);
$s = str_replace(' ', $wordDelimiter, $s);
return $s;
},
$needle
);
// Sort it reverse so we get the longer strings first
usort($massagedNeedles, function($a, $b) { return strlen($b) - strlen($a); });
$regexp = implode('|', $massagedNeedles);
} else {
$regexp = str_replace(' ', $wordDelimiter, preg_quote($needle, $regexpDelimiter));
}
$regexp = sprintf('%1$s%2$s%1$si', $regexpDelimiter, $regexp);
// Now find the next occurence
$strpos = preg_match($regexp, $haystack, $matches, PREG_OFFSET_CAPTURE, $offset);
if ($strpos === false) {
return $haystack;
}
$found = array_search(preg_replace('/' . $wordDelimiter . '/', ' ', $matches[0][0]), $needle);
$haystack = substr_replace($haystack, $replacement[$found], $matches[0][1], strlen($matches[0][0]));
exit;
return replaceStrings($haystack, $needle, $replacement, $offset);
}
var_dump(replaceStrings($message, $search, $replacements));
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 5.3.0 - 5.3.29 , 5.4.0 - 5.4.45 , 5.5.0 - 5.5.38 , 5.6.0 - 5.6.28 , 7.0.0 - 7.0.20 , 7.1.0 - 7.1.33 , 7.2.0 - 7.2.33 , 7.3.0 - 7.3.33 , 7.4.0 - 7.4.33 , 8.0.0 - 8.0.30 , 8.1.0 - 8.1.28 , 8.2.0 - 8.2.18 , 8.3.0 - 8.3.6 Output for 5.1.0 - 5.1.6 , 5.2.0 - 5.2.17 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/HpKFX on line 17
Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in /in/HpKFX on line 26
Process exited with code 255 . Output for 5.0.0 - 5.0.5 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/HpKFX on line 17
Parse error: parse error, unexpected T_FUNCTION, expecting ')' in /in/HpKFX on line 26
Process exited with code 255 . Output for 4.4.2 - 4.4.9 Parse error: syntax error, unexpected T_NEW in /in/HpKFX on line 17
Process exited with code 255 . Output for 4.3.0 - 4.3.1 , 4.3.5 - 4.3.11 , 4.4.0 - 4.4.1 Parse error: parse error, unexpected T_NEW in /in/HpKFX on line 17
Process exited with code 255 . Output for 4.3.2 - 4.3.4 Parse error: parse error in /in/HpKFX on line 17
Process exited with code 255 . preferences:dark mode live preview
274.13 ms | 401 KiB | 396 Q