我需要在字符串中找到一个字符串,然后替换它并在它周围添加文本


I need to find a string in a string then replace that and text around it

我有一个带有标记的字符串,需要用数据库中的文本替换。该文本字符串存储在数据库中,标记用于自动填充来自数据库不同部分的数据。

$text = '<span data-field="la_lname" data-table="user_properties">
{Listing Agent Last Name}
</span>
<br>RE: The new offer<br>Please find attached....'

如果我可以通过以下方式找到数据标记:strpos($text, 'la_lname');我可以用它来选择<span></span>标签之间的所有内容吗。。

所以新字符串看起来像:

'Sommers<br>RE: The new offer<br>Please find attached....'

我以为我可以根据<span>标记分解字符串,但这会带来很多问题,因为我需要保持文本的完整性和格式。我只想插入数据,而不影响其他内容。

获取字符串两部分之间的内容例如,如果你有

<span>SomeText</span>

如果你想得到SomeText,那么我建议使用一个函数,它可以得到你作为参数的两个部分之间的任何东西

<?php
function getbetween($content,$start,$end) {
$r = explode($start, $content);
if (isset($r[1])){
    $r = explode($end, $r[1]);
    return $r[0];
}
return '';
} 
$text = '<span>SomeText</span>';
$start = '<span>';
$end = '</span>';
$required_text = getbetween($text,$start,$end);
$full_line = $start.$required_text.$end;
$text = str_replace($full_line, 'WHAT TO REPLACE IT WITH HERE',$text);

您可以尝试preg_replace或使用DOM Parser,这对于导航类似HTML的结构更有用。

我应该补充一点,虽然正则表达式在本例中应该可以很好地工作,但您可能需要在未来做更复杂的事情,或者遍历更复杂的DOM结构来进行替换,因此在这种情况下,DOM解析器是可行的。

使用PHP简单HTML DOM解析器

$html = str_get_html('<span data-field="la_lname" data-table="user_properties">{Listing Agent Last Name}</span><br>RE: The new offer<br>Please find attached....');
$html->find('span')->innerText = 'New value of span';