Замена содержимого строки с помощью php, как избежать пробелов? - PullRequest
0 голосов
/ 25 февраля 2012

Я действительно не имею представления об этом, все, что я могу думать, это регулярные выражения. Это то, что я действительно хочу сделать. у меня есть этот тег 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 ]

1 голос
/ 25 февраля 2012

Вы можете выполнять «точечные» замены картами замены, например:

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

... так что интервалы не будут иметь никакого значения, так как они не будут изменены.

0 голосов
/ 25 февраля 2012

Вот регулярное выражение, которое должно работать для вашего примера, независимо от количества пробелов между атрибутами.

$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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...