str_replace不能正常运行PHP

时间:2011-05-16 17:45:05

标签: php tags str-replace

我有两个字符串是从文件中提取的行。我试图首先通过执行str_replace并用空格替换它们来剥离它们的标签(例如)。不幸的是,这似乎不起作用,因为当我在表格中回显结果时,我仍然看到标签。

有什么想法吗?

# Trim the title and description of their tags. Keep only text.
$title_new = $file_lines[$title_line];
str_replace("<title>"," ", $title_new);
str_replace("</title>"," ", $title_new);

$desc_new = $file_lines[$desc_line];
str_replace("<description>"," ", $desc_new);
str_replace("</description>"," ", $desc_new);

# Echo out the HTML form
echo "<form action=\"rewrite.php\" method=\"post\">";
echo "Title: <input type=\"text\" name=\"new_title\" size=\"84\" value=\"".$title_new."\">";
echo "</input>";

echo "<br>Article Body:<br>";
echo "<textarea rows=\"20\" cols=\"100\" wrap=\"hard\" name=\"new_desc\">".$desc_new."</textarea><br>";

echo "<input type=\"hidden\" name=\"title_line\" value=\"".$title_line."\">";
echo "<input type=\"hidden\" name=\"title_old\" value=\"".$file_lines[$title_line]."\">";
echo "<input type=\"hidden\" name=\"desc_line\" value=\"".$desc_line."\">";
echo "<input type=\"hidden\" name=\"desc_old\" value=\"".$file_lines[$desc_line]."\">";

echo "<input type=\"submit\" value=\"Modify\" name=\"new_submit\">";

5 个答案:

答案 0 :(得分:4)

str_replace()返回修改后的字符串。所以你需要分配它:

$title_new = str_replace("<title>"," ", $title_new);

$desc_new相同。阅读文档了解更多详情。

答案 1 :(得分:2)

str_replace返回字符串,所以你应该这样做:

$title_new = str_replace("<title>"," ", $title_new);
$title_new = str_replace("</title>"," ", $title_new);
$desc_new = str_replace("<description>"," ", $desc_new);
$desc_new = str_replace("</description>"," ", $desc_new);

答案 2 :(得分:1)

使用PHP时剥离标记的最佳方法是HTMLPurifier

我不会尝试使用str_replace做类似的事情。很可能一个人犯了错误。

答案 3 :(得分:1)

 $title_new = str_replace(array("<title>", "</title>")," ", $file_lines[$title_line]);
 $desc_new = str_replace(array("<description>","</description>")," ", $file_lines[$desc_line]);

或使用

  

用strip_tags

答案 4 :(得分:1)

正如其他答案所提到的,您需要指定返回值$title_new = str_replace("<title>"," ", $title_new);,但我强烈建议您将strip_tags()用于其预期用途。

$buffer = strip_tags($buffer, '<title><description>')

此外,可能无需逐行解析文件。使用file_get_contents()之类的东西一次读取整个文件会快很多倍,然后使用正则表达式或xml解析器。