用php替换字符串内容,如何逃避空格?

时间:2012-02-25 03:32:11

标签: php regex string replace

我真的不知道这一切,我认为是正则表达式。这就是我真正想做的事情。我有这个HTML标签。

<link rel="alternate" type="text/html" href="frenchnew.html" hreflang="fr" lang="fr" title="title">

我想把这整个刺痛替换成:

<link rel="alternate" type="text/html" href="new.html" hreflang="ca" lang="ca" title="new">

我正在使用str_replace()方法。但问题是,如果搜索字符串在属性之间有空格,如下所示:type="text/html"<spance1><spance2><spance3>href="frenchnew.html"在查找字符串时如何匹配?使用正则表达式?我不知道该怎么做?请帮帮我...

2 个答案:

答案 0 :(得分:1)

您可以使用替换地图执行'尖头'替换,例如:

$new_link = str_replace(
    array('="frenchnew.html"', '="fr"', ...),
    array('="new.html"', '="ca"', ...)
);

......所以间距根本不重要,因为它们不会改变。

答案 1 :(得分:0)

这是一个正则表达式,无论属性之间的空格数是多少,都应该适用于您的示例。

$original_string = '<link rel="alternate" type="text/html" href="frenchnew.html" hreflang="fr" lang="fr" title="title">';
$pattern = '<link\s+rel="alternate"\s+type="text\/html"\s+href="frenchnew\.html"\s+hreflang="fr"\s+lang="fr"\s+title="title">';
$replacement = '<link rel="alternate" type="text/html" href="new.html" hreflang="ca" lang="ca" title="new">';

$new_string = preg_replace("/$pattern/", $replacement, $original_string); // Contains your new string