如何在php中找到与定位字符串相邻的字符?我使用foreach循环来查找带有$ value变量的更大文本体内的每个值,那么我如何计算出$ value值的字符串?对不起,如果这令人困惑。
$count = 1;
foreach ($new_classes as $value)
{
$pageBody2 = $pageBody;
$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);
}
}
echo $pageBody;
我想找到字符串$ value周围的字符,看看它们是否是字母数字(检查是否有字母或数字的字符,排除句号或空格),这样如果有,则不会#39 ; t替换它们
答案 0 :(得分:0)
解答:我想出了该怎么做:
$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变量的代码(但是他们后来遗憾地删除了他们的答案,我无法得到他们的名字给他们信用)。我将其改编成if语句,以创建单词的链接,如果它们被空格,句点或s结尾包围。
解决方案的书面解释:我在$ pageBody中找到$ value的位置,使用条带不区分大小写的位置(因为该单词的名称可能与其名称不同)。然后使用该位置,我通过在$ pageBody中拉出$ value的位置并向下拉1来将单词左侧的字符定义为$ left,然后通过拉动将该单词右侧的字符定义为$ right。再次定位,并以$ value中的字符数上升。我在$ left上运行验证以确保它不是一封信,并确保$ right是字母s,或者根本不是字母。如果它通过了验证测试,那么我运行了剩余的代码。但是,如果$ value侧面的任何一个字符都是一个字母(不包括s作为$ right)那么它就不会执行代码