У меня есть PHP String $ menu с большим количеством ссылок. Мне нужно заменить href идентификатором на основе ссылки.Заменить URL с действующим ID
Мне нужно
- удалить домен
- удалить слэши в начале и конце
- заменить слеши в середине с «-»
Это я, что у меня есть :
<a href="http://www.test.de/start/">Link</a>
<a href="http://www.test.de/contact/">Another Link</a>
<a href="http://www.test.de/contact/sub/">Sub Link</a>
И это то, что я хочу:
<a href="#start">Link</a>
<a href="#contact">Another Link</a>
<a href="#contact-sub">Another Link</a>
Я судимо его с preg_replace
$search = array(
"/http:\/\/www.test.de/",
"/".preg_quote('/">', '/')."/"
);
$replacement = array('#','">');
$menu = preg_replace($search,$replacement,$menu);
Мое решение выглядит немного «грязным и не заменяет слеши в середине. Любые идеи для «реального» шаблона, чтобы это сделать?
Является ли домен всегда то же самое? – Lawson
Чтобы упростить задачу, вы можете использовать 'preg_replace_callback' и в широком смысле' 'теги. Затем перепишите их внутренности с помощью нескольких 'str_replace()'. Это быстро и будет работать, но ** будет работать только в простом сценарии **, где все ваши ссылки создаются именно так. Если вы начинаете иметь более сложные теги, возможно, с встроенными стилями или Javascript, которые вводят * пробелы * и * экранированные кавычки *, регулярные выражения не будут работать, а решение Джека - ваш единственный практический ресурс. – LSerni