1

我正在尝试解析一个用图像代替一些字母和数字的字段。它可以是段落的开头字母,该字母的精美图像,也可以是文本中间有图像替换的字母或数字。例如,短语

"Four scores and 7 years ago"

<img src=/img/F.png>our scores and <img src=/img/7.png"> years ago

用图像替换了一些字母和数字。

我能够正确解析要在文本字段中替换图像的字母或数字,但我不太明白我应该如何去做。这是基于 PHP 文档中的一个示例:

if ( ! strcmp('Text Field', $label)) {
   $img_tags = $divs->item($i + 1)->getElementsByTagName('img');
   $num_images = $img_tags->length;

   for ($img = 0; $img < $num_images; $img++) {
       if ($img_tags->item($img)->hasAttributes()) {
           $img_tag = $img_tags->item($img)->getAttribute('src');
           if (preg_match('/name=([a-zA-Z0-9])/', $img_tag, $matches)) {
               // XXX So here I have $matches[1] which contains the letter/number I want inserted into the parent node in the exact place of the <img> tag
               $replacement = $page->createTextNode($matches[1]);
               $img_tags->item($img)->parentNode->replaceChild($replacement, $img_tags->item($img));
           }
       }
   }
}

扩展示例:

可以说我打了这样一条线:

<div class="label">Title</div> 

我知道下一个字段将是一个文本字段

<div class="value">
  <img src=/img/F.png>our scores and <img src=/img/7.png"> years ago
</div> 

我试图抓住段落并将图像转换为我从图像名称中解析的字母。

4

1 回答 1

1

可能使用 str_replace 是更好的方法。

$source = "<img src=/img/F.pNg>our scores and <img src=/img/7.png\"> years ago";

preg_match_all("/<.*?[\=\/]([^\/]*?)\.(?:png|jpeg).*?>/i", $source, $images);

$keys = array();
$replacements = array();

foreach($images[0] as $index => $image)
{
    $keys[] = $image;
    $replacements[] = $images[1][$index];
}

$result = str_replace($keys, $replacements, $source);

// Returns 'Four scores and 7 years ago'
print($result . PHP_EOL);
于 2012-10-11T20:35:40.703 回答