在PHP中将字符串转换为大写但不是html标记

时间:2010-10-27 08:57:44

标签: php string

我有点难以理解如何在php中创建字符串大写而不使标记大写。

例如:

<p>Chicken &amp; <a href="/cheese">cheese</a></p>

将成为

<p>CHICKEN &amp; <a href="/cheese">CHEESE</a></p>

任何建议表示赞赏,谢谢!

4 个答案:

答案 0 :(得分:4)

以下内容将使用大写数据替换BODY中的所有DOMText节点数据:

$html = <<< HTML
<p>Chicken &amp; <a href="/cheese">cheese</a></p>
HTML;

$dom = new DOMDocument;
$dom->loadHTML($html);
$xPath = new DOMXPath($dom);
foreach($xPath->query('/html/body//text()') as $text) {
    $text->data = strtoupper($text->data);
}
echo $dom->saveXML($dom->documentElement);

给出:

<html><body><p>CHICKEN &amp; <a href="/cheese">CHEESE</a></p></body></html>

另见

答案 1 :(得分:3)

您可以使用DOM类并使用它转换所有文本。

编辑:或者你可以使用这个css:

.text{
    text-transform: uppercase;
}

正如GUMBO建议的那样

答案 2 :(得分:1)

Parse it,然后随意大写。

答案 3 :(得分:-1)

我很想让整个字符串大写......

$str = strtoupper('<p>Chicken &amp; <a href="/cheese">cheese</a></p>');

...然后使用preg_match()调用重新遍历HTML标记(假设HTML有效)以小写HTML标记及其属性。