用一个额外的div将括号括在PHP字符串中

用一个额外的div将括号括在PHP字符串中,php,regex,string,Php,Regex,String,我有这样一个字符串: $string=“轨道长度(trackLengthFT)” 我想将字符串转换为: $string=“Track Length(trackLengthFT)”您可以执行以下操作来转换括号内的任何内容。 下面的代码将使用正则表达式为您完成此操作 $string = preg_replace('/(.*?)(?:\()(.*?)(?:\))/', '$1<div class="parenthesis">($2)</div>', $search); $st

我有这样一个字符串:

$string=“轨道长度(trackLengthFT)”

我想将字符串转换为:


$string=“Track Length(trackLengthFT)”

您可以执行以下操作来转换括号内的任何内容。 下面的代码将使用正则表达式为您完成此操作

$string = preg_replace('/(.*?)(?:\()(.*?)(?:\))/', '$1<div class="parenthesis">($2)</div>', $search);
$string=preg\u replace('/(.*?(:\()(.*?(:\)/','$1($2)',$search);

您可以执行以下操作来转换括号内的任何内容。 下面的代码将使用正则表达式为您完成此操作

$string = preg_replace('/(.*?)(?:\()(.*?)(?:\))/', '$1<div class="parenthesis">($2)</div>', $search);
$string=preg\u replace('/(.*?(:\()(.*?(:\)/','$1($2)',$search);

前提是您不需要支持嵌套括号,例如

“轨道长度(轨道长度英尺(45分钟))”

匹配括号中的非空字符串与
/\(.+?\)/
一样简单。
+?
告诉通配符在第一个“)”而不是最后一个“)”处停止。然后,您可以搜索这些模式并用包装版本替换它们

$string = preg_replace('/\(.+?\)/', '<div class="parenthesis">$0</div>', $string);
$string=preg\u replace('/\(.+?\)/”、“$0”、“$string”;
替换字符串中的
$0
引用正则表达式匹配的整个字符串


演示~

提供了不需要支持嵌套括号的功能,例如

“轨道长度(轨道长度英尺(45分钟))”

匹配括号中的非空字符串与
/\(.+?\)/
一样简单。
+?
告诉通配符在第一个“)”而不是最后一个“)”处停止。然后,您可以搜索这些模式并用包装版本替换它们

$string = preg_replace('/\(.+?\)/', '<div class="parenthesis">$0</div>', $string);
$string=preg\u replace(“/\(.+?\)/”、“$0'、$string);
替换字符串中的
$0
引用正则表达式匹配的整个字符串


Demo ~

这有点冗长,对于某些人来说可能更容易阅读,而不是正则表达式,这不是很灵活,因为它只会包装句子中的最后一项

$string = "Track Length (trackLengthFT)";
$a_string = explode(' ', $string);
$last = array_pop($a_string);
$div = sprintf('<div class="a-class">%s</div>', $last);
array_push($a_string, $div);
$final = implode(' ', $a_string); 
// Track Length <div class="a-class">(trackLengthFT)</div>

这有点冗长,对于某些人来说可能更容易阅读,而不是正则表达式,这不是很灵活,因为它只会包装句子中的最后一项

$string = "Track Length (trackLengthFT)";
$a_string = explode(' ', $string);
$last = array_pop($a_string);
$div = sprintf('<div class="a-class">%s</div>', $last);
array_push($a_string, $div);
$final = implode(' ', $a_string); 
// Track Length <div class="a-class">(trackLengthFT)</div>

那么你到底试过什么呢?那么你到底试过什么呢?如果你有一个问题,并且你使用正则表达式来解决它,通常你有两个问题:正则表达式通常用于验证和解析。如果他只是用这个静态地解析他的网站中的括号,并将其输出到那些静态入口或db入口,那么我会说他很好。但要动态地运行它,是的,你说得有道理。这看起来太复杂了。为什么不直接更换有问题的部件,例如,
preg\u replace('/\(.+?\)/'、'$0'、$string)
Phil如果他想试试,“(.+?)”和$1让它正常工作,他可以这样做。正如@Phil建议的那样,你可以这样做,这里就是一个活生生的例子。“正常工作”是什么意思?不需要额外的括号,
$0
是整个匹配项,因此它可以正常工作如果您有问题,并且使用正则表达式来解决,通常您有两个问题:正则表达式通常用于验证和解析。如果他只是用这个静态地解析他的网站中的括号,并将其输出到那些静态入口或db入口,那么我会说他很好。但要动态地运行它,是的,你说得有道理。这看起来太复杂了。为什么不直接更换有问题的部件,例如,
preg\u replace('/\(.+?\)/'、'$0'、$string)
Phil如果他想试试,“(.+?)”和$1让它正常工作,他可以这样做。正如@Phil建议的那样,你可以这样做,这里就是一个活生生的例子。“正常工作”是什么意思?不需要额外的括号,
$0
是整个匹配项,因此效果很好