Хорошо, у меня есть раздел кода с такими вещами, как:
<a title="title" href="http://example.com">Text</a>
Мне нужно как-то переформатировать их так, чтобы они стали:
<b>Text</b>
Есть по меньшей мере 24 ссылки, которые меняются, и все они имеют разные заголовки и href. Спасибо заранее, Остин.
Хотя это и не оптимально, вы можете сделать это с помощью регулярных выражений:
$string = '<a title="title" href="http://example.com">Text</a>'; $string = preg_replace("/<a\s(.+?)>(.+?)<\/a>/is", "<b>$2</b>", $string); echo($string);
В основном это говорит о том, что вы ищете часть строки, которая имеет форму <a*>{TEXT}</a>
, скопируйте {TEXT}
и замените эту целую строку с помощью <b>{TEXT}</b>
,
Попробуй это,
$link = '<a title="title" href="http://example.com">Text</a>'; echo $formatted = "<b>".strip_tags($link)."</b>";
Проверьте эту ссылку, я думаю, это то, что вы ищете.
Вы хотите прочитать о Регулярных выражениях, потому что они понадобятся вам рано или поздно в любом случае. Если вы не возражаете против содержимого свойства href, вы можете использовать:
s/<a(?:\s[^>]*)?>([^<]+)<\/a>/<b>\1<\/b>/
Часть между первым // ищет открывающий тег (либо <a> в отдельности или с некоторыми параметрами, в этом случае требуется пустое пространство \ s, чтобы избежать совпадения <abbrev>, например), некоторый текст, который будет сохранен скобки и закрывающий тег. Часть между второй // является замещающей частью, где \ 1 обозначает текст, сопоставляемый скобками в первой части.
См. Также функцию preg_replace PHP. Тогда окончательное выражение будет выглядеть так (проверено):
preg_replace('/<a(?:\s[^>]*)?>([^<]+)<\/a>/i', '<b>\\1</b>', '<a href="blabla">Text</a>');