2012-02-25 5 views
-1

私はregexesだと思うことができるこのアイデアはありません。これは私が本当にやりたいことです。私はこのhtmlタグを持っています。PHPを使用して文字列コンテンツを置き換える、スペースをエスケープするには?

<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"文字列を検索するときにどのように一致させることができますか?正規表現を使用していますか?私はそれをどうやって考えていないのですか?彼らはないので、間隔は、まったく関係ありませんので...

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

:あなたはそのように、交換用のマップとの交換「を指摘し」んも...

答えて

1

を私を助けてください。変更する。

+0

ご返信ありがとうございます。あなたが言及した方法を使用して問題を置き換えるので、私は一度にすべてを変更したいと思った。私はここでファイルを読み、そのファイルの内容を置き換えています。 '=" frenchnew.html "という検索文字列に類似した別の文字列が他にも存在するとしたらどうでしょうか?それはまた交換される... – guitarlass

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 
関連する問題