我有一个字符串,我需要在字符串的某些索引处添加一些HTML标签。
$comment_text = 'neethu and Dilnaz Patel check this'
Array ( [start_index_key] => 0 [string_length] => 6 )
Array ( [start_index_key] => 11 [string_length] => 12 )
我需要在开始时分割索引键与string_length
中提到的长预期最终输出
$formattedText = '<span>@neethu</span> and <span>@Dilnaz Patel</span> check this'
我该怎么办?
这是一个非常严格的方法,在第一次更改时就会中断。你能控制字符串的创建吗?如果是,您可以创建一个带有占位符的字符串并填充值。
即使你可以用regex:
$pattern = '/(.+[^ ])s+and (.+[^ ])s+check this/i';
$string = 'neehu and Dilnaz Patel check this';
$replace = preg_replace($pattern, '<b>@$1</b> and <b>@$2</b> check this', $string);
但这仍然是一个非常严格的解决方案。
如果您可以尝试为名称创建一个带有占位符的字符串。这将在将来更容易管理和更改。
<?php
function my_replace($string,$array_break)
{
$break_open = array();
$break_close = array();
$start = 0;
foreach($array_break as $key => $val)
{
// for tag <span>
if($key % 2 == 0)
{
$start = $val;
$break_open[] = $val;
}
else
{
// for tag </span>
$break_close[] = $start + $val;
}
}
$result = array();
for($i=0;$i<strlen($string);$i++)
{
$current_char = $string[$i];
if(in_array($i,$break_open))
{
$result[] = "<span>".$current_char;
}
else if(in_array($i,$break_close))
{
$result[] = $current_char."</span>";
}
else
{
$result[] = $current_char;
}
}
return implode("",$result);
}
$comment_text = 'neethu and Dilnaz Patel check this';
$my_result = my_replace($comment_text,array(0,6,11,12));
var_dump($my_result);
解释:
创建数组参数:偶数索引(0,2,4,6,8,…)将是start_index_key
,奇数索引(1,3,5,7,9,…)将是string_length
读取每个断点,并将其存储在$break_open
和$break_close
创建数组$result循环你的字符串,添加,添加或不添加span与break_point
结果:string '<span>neethu </span>and <span>Dilnaz Patel </span> check this' (length=61)