已解决:我想出了该怎么做:
$count = 1;
foreach ($new_classes as $value)
{
$pos = stripos($pageBody, $value);
$left = $pageBody[$pos - 1];
$right = $pageBody[$pos + strlen($value)];
if (!ctype_alpha($left) && (!ctype_alpha($right) || ($right == 's')))
{
$pageBody2 = $pageBody;
if ($right == 's')
{
$pageBody = str_replace($value . 's', '<a id="link" name="links" href="http://thecompendium.comuv.com/Compendium/index.html?page=' . $value . '">' . $value . 's' . '</a>', $pageBody, $count);
if ($pageBody == $pageBody2)
{
$pageBody = str_replace(strtolower($value) . 's', '<a id="link" name="links" href="http://thecompendium.comuv.com/Compendium/index.html?page=' . $value . '">' . strtolower($value) . 's' . '</a>', $pageBody, $count);
}
}
else
{
$pageBody = str_replace($value, '<a id="link" name="links" href="http://thecompendium.comuv.com/Compendium/index.html?page=' . $value . '">' . $value . '</a>', $pageBody, $count);
if ($pageBody == $pageBody2)
{
$pageBody = str_replace(strtolower($value), '<a id="link" name="links" href="http://thecompendium.comuv.com/Compendium/index.html?page=' . $value . '">' . strtolower($value) . '</a>', $pageBody, $count);
}
}
}
}
其他人发布了一个定义 $left、$right 和 $pos 变量的代码(但是他们后来很遗憾地删除了他们的答案,我无法得到他们的名字来给予他们信任)。如果它们被空格、句点或以 s 结尾,我将其修改为 if 语句以创建指向单词的链接。
解决方案的书面说明:我使用 stripos 在 $pageBody 中定位了 $value 的位置,用于不区分大小写的位置(因为该单词的大小写可能与其作为类的名称不同)。然后使用该位置,我通过拉动 $pageBody 中 $value 的位置并向下 1 将单词左侧的字符定义为 $left,然后通过拉动将单词右侧的字符定义为 $right再次定位,并增加 $value 中的字符数。我对 $left 进行了验证,以确保它不是字母,并确保 $right 是字母 s,或者根本不是字母。如果它通过了验证测试,那么我运行其余的代码。但是,如果 $value 旁边的任一字符是字母(不包括 s 作为 $right),则它不会执行代码