这个表达有什么问题?
echo preg_replace("/Condizioni/","ciao","<tr bla vla Condizioni");
它没有返回任何东西......
无论如何,当我删除“&lt;”时它会起作用char ...但我不明白为什么......这是一个特殊的字符,如果是这样的话,我必须按照字面意思来匹配它。
谢谢...
答案 0 :(得分:2)
它可以按您的需要工作(code on ideone)。唯一的问题是网页中的echo "<tr bla vla ciao";
会导致麻烦。你必须逃避你的HTML字符。
htmlspecialchars()
会为您做到这一点:
echo htmlspecialchars(preg_replace("/Condizioni/","ciao","<tr bla vla Condizioni"));
它将回显<tr bla vla ciao
。
答案 1 :(得分:1)
你是什么意思“回归”?
$ php --version
PHP 5.3.2 (cli) (built: Aug 7 2010 00:04:41)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
$ cat test.php
#!/usr/bin/env php
<?
echo preg_replace("/Condizioni/","ciao","<tr bla vla Condizioni");
?>
$ ./test.php
<tr bla vla ciao
这看起来是正确的。
你在期待什么?
答案 2 :(得分:0)
正则表达式没有错;只是带有<
符号的文本无法正常显示,因为浏览器认为您已打开HTML标记。
您可以通过在浏览器上执行“查看源”来证明这一点;您应该按预期看到文本。
您需要做的是在输出文本之前对完成的文本执行htmlentities(),以便将<
字符转义为浏览器可以显示的实体值。