是否有可能在PHP中更改原始的html文本?

时间:2016-08-20 19:07:17

标签: php

我正在努力使#34;方式友好"网站。我们使用不同的偏差取决于性别和其他因素。例如:

You did = robili
It did = robilo
She did = robila

Linguisticaly这是一个非常简化(和不幸)的例子!我想在适当的地方更改php文件中的html文本。例如

<? php
something
?>

html text of the page and somewhere is the word "robil"
<div>we tried to robil^i|o|a^</div>

<? php something ?>

现在我想替换所有出现的不同令牌^ 字符 | 字符 | 字符 ^并用其内部替换它们之一值根据&#34;性别&#34;。

在客户端的javascript中很容易,但你会看到所有这些奇怪的&#34;标记化&#34;在javascript替换它之前。 在这里,我不知道优雅的解决方案。

或者你有更好的主意吗?

感谢您的建议。

1 个答案:

答案 0 :(得分:2)

您可以在HTML之前和之后添加这些脚本:

<?php

// start output buffering
ob_start();

?>
<html>
<body>
html text of the page and somewhere is the word "robil"
<div>we tried to robil^i|o|a^, but also vital^si|sa|ste^, borko^mal|mala|malo^ </div>
</body>
</html>
<?php

$use  = 1; // indicate which declination to use (0,1 or 2)

// get buffered html
$html = ob_get_contents();
ob_end_clean();

// match anything between '^' than's not a control chr or '^', min 5 and max 20 chrs.
if (preg_match_all('/\^[^[:cntrl:]\^]{3,20}\^/',$html,$matches))
{
  // replace all
  foreach (array_unique($matches[0]) as $match)
  {
    $choices = explode('|',trim($match,'^'));
    $html    = str_replace($match,$choices[$use],$html);
  }
}

echo $html;

返回:

  

页面的html文本和某处是&#34; robil&#34;我们试过   robilo,还有vitalsa,borkomala