pre_replace проблема многомерного массива - PullRequest
0 голосов
/ 18 июня 2010

Я хочу заменить группы слов ссылками. Я использую многомерный массив для их определения (в реальном мире их будет тысячи). Вот код:

<code>$text = "<html><body><pre>
Here is Foo in text.
Now come Baz? and Bar-X.
Replace nothing here: Foo (followed by brackets).
"; $ s = массив ( массив ("t" => "Foo", "u" => "http://www.foo.com"," c "=>" foo "), массив ("t" => "Baz?", "u" => "http://www.baz.net"," c "=>" test "), массив ("t" => "Bar-X", "u" => "http://www.baz.org"," c "=>" test ") ); foreach ($ s как $ i => $ row) { $ replace = preg_replace ('/ (? = \ Q'. $ row ["t"]. '\ E [^ (] + $) \ b \ Q'. $ row ["t"]. '\ E \ б / м», ''. $ Строка [ "т"] '', $ Текста); } echo $ заменен; ?>

Проблема в том, что заменяется только один элемент массива, а не все. Это что-то о $ text в peg_replace (). У кого-нибудь есть подсказка для меня? Спасибо!

1 Ответ

1 голос
/ 18 июня 2010

Вы должны добавить к $replaced var, теперь вы перезаписываете переменную.

<code>    <?php

    $text = "<html><body><pre>
    Here is Foo in text.
    Now come Baz? and Bar-X.
    Replace nothing here: Foo (followed by brackets).
    
"; $ s = массив ( массив ("t" => "Foo", "u" => "http://www.foo.com"," c "=>" foo "), массив ("t" => "Baz?", "u" => "http://www.baz.net"," c "=>" test "), массив ("t" => "Bar-X", "u" => "http://www.baz.org"," c "=>" test ") ); $ replace = $ text; foreach ($ s как $ i => $ row) { $ replace = preg_replace ('/ (? = \ Q'. $ row ["t"]. '\ E [^ (] + $) \ b \ Q'. $ row ["t"]. '\ E \ б / м», ''. $ Строки [ "т"]. ', $ заменил); } echo $ заменен; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...