假设你有一个像
这样的字符串$str = "<img src='i12'><img src='i105'><img src='i12'><img src='i24'><img src='i15'>....";
是否可以将每个i+n
替换为名为n
的数组的$arr
值
因此,例如<img src='i12'>
替换为<img src='$arr[12]'>
。
答案 0 :(得分:3)
如果我是你,我只需解析标记,然后相应地处理/修改它:
$dom = new DOMDocument;
$dom->loadHTML($str);//parse your markup string
$imgs = $dom->getElementsByTagName('img');//get all images
$cleanStr = '';//the result string
foreach($imgs as $img)
{
$img->setAttribute(
'src',
//get value of src, chop of first char (i)
//use that as index, optionally cast to int
$array[substr($img->getAttribute('src'), 1)]
);
$cleanStr .= $dom->saveXML($img);//get string representation of node
}
echo $cleanStr;//echoes new markup
现在在演示中,您将看到src属性被替换为$array[n]
之类的字符串,上面的代码将使用数组值替换值...
答案 1 :(得分:0)
我会使用preg_replace
:
$pattern="/(src=)'\w(\d+)'/";
$replacement = '${1}\'\$arr[$2]\'';
preg_replace($pattern, $replacement, $str);
$pattern="/(src=)'\w(\d+)'/";
src='letter + digits'
等文本块。src=
和数字块,以便能够将它们打印回来。 $replacement = '${1}\'\$arr[$2]\'';
php > $str = "<img src='i12'><img src='i105'><img src='i12'><img src='i24'><img src='i15'>....";
php > $pattern="/(src=)'\w(\d+)'/";
php > $replacement = '${1}\'\$arr[$2]\'';
php > echo preg_replace($pattern, $replacement, $str);
<img src='$arr[12]'><img src='$arr[105]'><img src='$arr[12]'><img src='$arr[24]'><img src='$arr[15]'>....