2014-10-16 4 views
1

Например, у меня есть простой текст.Заменить конкретные строки в тексте с помощью ссылок на ссылки

Тинтин в Тибете является с: 20 объем Приключения Тинтина, серии комиксов бельгийский карикатуриста Hergé. Мультипликатор считается это его любимый Тинтин приключения и эмоциональные усилия, так как он создал его, страдая от травматических кошмаров и личного конфликта при принятии решения оставить свою жену с: 3 десятилетия для молодого женщины.

Что мне нужно, это преобразовать конкретные пользовательские ссылки в тексте в интерактивные ссылки, используя номер после двоеточия. (S: номер)

Так s:10 будет конвертировать в http://somepage.com/demo.php?num=10

В этом случае:

$text = "Tintin in Tibet is the s:20 volume of The Adventures of Tintin."; 

Идея здесь, вероятно, в поисках конкретной формы строки с использованием регулярных выражений и заменяя его взорванным (извлечение числа) и модифицированной (конвертирующей в ссылку) версией самой, но я не очень хорош с регулярным выражением и не знаю, как t o делать это на практике.

Кроме того, что было бы самым быстрым вариантом, если у вас много экземпляров сменных строк по всему тексту?

ответ

1

Вы правильны, лучший способ, чтобы обойти это было бы регулярное выражение:.

$yourText = "Tintin in Tibet....."; 
$linkText = preg_replace('/s:([0-9]+)/', '<a href="http://somepage.com/demo.php?num=$1">s:$1</a>', $yourText); 
echo $linkText; 

Мы соответствие ничего, что говорит s: следует произвольное число ([0-9]+ означает «один или более цифр» Вы могли бы do \d+, но [0-9]+ более читабельна в моем мнении). В скобках мы собираем все, что сопоставляется между ними; в этом случае число. Затем мы вставляем первое совпадение (что было между первой парой скобок) с $1 (какой preg_replace интерпретируется как ссылки на сопоставленные множества) в тег привязки.

+0

Отлично работает, спасибо :) –

+1

Замечательно. Хорошего дня! – Dencker

Смежные вопросы