我有一个带有标记的字符串,我需要用数据库中的文本替换。此文本字符串存储在数据库中,标记用于自动填充来自数据库不同部分的数据。
$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>
标签来爆炸字符串,但这会产生很多问题,因为我需要保持文本的完整性和格式化。我只想插入数据并保持其他所有内容不受影响。
答案 0 :(得分:0)
您可以尝试preg_replace或使用DOM Parser,这对于浏览类似HTML的结构非常有用。
我应该补充一点,虽然正则表达式在这个例子中应该可以正常工作,但是你可能需要在将来做更复杂的事情或者为你的替换遍历更多内在的DOM结构,所以一个DOM Parser是这种情况下的方法。
答案 1 :(得分:0)
获取字符串两部分之间的内容 例如,如果你有
<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);
答案 2 :(得分:0)
$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';