Php 用正则表达式将单词包装成字符串

Php 用正则表达式将单词包装成字符串,php,regex-negation,Php,Regex Negation,这是字符串 (代码) 谢谢。首先,我应该说,HTML操作最好使用适当的解析器来完成,比如DOMDocument。这个特殊的问题很简单,因此正则表达式可能不需要太多的技巧就可以工作,但请注意:) 你可以使用环顾四周;这使您无需在替换过程中恢复相邻字符串: echo preg_replace('/(?<=^|<br \/>)[^:]+(?=:)/m', '<b>$0</b>', $str); echo preg_replace('/(?我应该首先说,HTM

这是字符串

(代码)


谢谢。

首先,我应该说,HTML操作最好使用适当的解析器来完成,比如
DOMDocument
。这个特殊的问题很简单,因此正则表达式可能不需要太多的技巧就可以工作,但请注意:)

你可以使用环顾四周;这使您无需在替换过程中恢复相邻字符串:

echo preg_replace('/(?<=^|<br \/>)[^:]+(?=:)/m', '<b>$0</b>', $str);

echo preg_replace('/(?我应该首先说,HTML操作最好使用适当的解析器来完成,例如
DOMDocument
。这个特殊的问题很简单,因此正则表达式可能在没有太多hocus pocus的情况下工作,但请注意:)

您可以使用“环视”;这使您无需在替换过程中恢复相邻字符串:

echo preg_replace('/(?<=^|<br \/>)[^:]+(?=:)/m', '<b>$0</b>', $str);

echo preg\u replace('/(?此preg\u replace应实现以下功能:

preg_replace('#(^|<br ?/>)([^:]+):#m','$1<b>$2</b>:',$input)
preg#u replace('#(^.)([^:]+):#m','$1$2:',$input)

-运行(F9)

此预更换应实现以下功能:

preg_replace('#(^|<br ?/>)([^:]+):#m','$1<b>$2</b>:',$input)
preg#u replace('#(^.)([^:]+):#m','$1$2:',$input)
-运行(F9)

我能想到的最“通用”和最便宜的regex方法是:

$parts = explode('<br', $str);//don't include space and `/`, as tags may vary
$formatted = '';
foreach($parts as $part)
{
    $formatted .= preg_replace('/^\s*[\/>]{0,2}\s*([^:]+:)/', '<b>$1</b>',$part).'<br/>';
}
echo $formatted;
然后,字符串看起来就像:

$str=preg_replace(…);
$formatted=preg\u replace('/^([^:\n\\\]++)\s{0,}:(\n(?![^\n:\\]+\s{0,}:)|*+)/,'$1:$2
,$str);
我能想到的最“通用”和最便宜的regex方法是:

$parts = explode('<br', $str);//don't include space and `/`, as tags may vary
$formatted = '';
foreach($parts as $part)
{
    $formatted .= preg_replace('/^\s*[\/>]{0,2}\s*([^:]+:)/', '<b>$1</b>',$part).'<br/>';
}
echo $formatted;
然后,字符串看起来就像:

$str=preg_replace(…);
$formatted=preg\u replace('/^([^:\n\\\]++)\s{0,}:(\n(?![^\n:\\]+\s{0,}:)|*+)/,'$1:$2
,$str);
$formatted = array();
foreach($parts as $part)
{
    $formatted[] = preg_replace('/^\s*[\/>]{0,2}\s*([^:]+:)/', '<b>$1</b>',$part);
}
echo implode('<br/>', $formatted);
$str = preg_replace('/\<\s*br\s*\/?\s*\>/i', PHP_EOL, $str);//allow for any form of break tag
$str = preg_replace(...);
$formatted = preg_replace('/^([^:\n\\]++)\s{0,}:((\n(?![^\n:\\]++\s{0,}:)|.)*+)/','<b>$1:</b>$2<br/>', $str);