Работа с ссылками
Мне надо в тексте позаменять все слова или словосочетания на такие же,но берущиеся из базы данных на которые уже должна быть установлена ссылка. То есть дан текст типа
"Intel Pentium представила процессор" и его надо заменить на "<a href=asd>Intel Pentium</a> представила процессор"
В этом нет ничего сложного, str_replace,но как проверить стоит ли на Intel Pentium ссылка или может стоит на Intel.
Всё это на PHP
2) Подскажите пожалуйста, я вот сделал поиск, но мне надо очищать строку от плохих символов, привидите плз какие символы и как удалить из переменной $search.
3) Как мне выдрать все ссылки из текста, типа <a href=111>222</a> и мне надо получить в результате $name=222 $link=111 ?????
Цитата:
Originally posted by olegking
... То есть дан текст типа
"Intel Pentium представила процессор"
и его надо заменить на
"<a href=asd>Intel Pentium</a> представила процессор"
В этом нет ничего сложного, str_replace,но как проверить стоит ли на Intel Pentium ссылка или может стоит на Intel.
Всё это на PHP
Ёханый бабай, так бы блин сразу и сказал.
Создаёшь таблицу, заносишь в неё ключевые слова-одним полем, вторым полем-id связанных с ним расширений, третьим- ссылка по умолчанию.
Создаешь вторую таблицу, в ней id, расширение и ссылка.
Конкретный пример. Ключевое слово intel - заносим в первую таблицу, даем id=1 (его вообще индексом и на автоинкремент)
С интелом у нас к примеру связано
1. Сама контора-описание, история
2. По каждому поколению и ядру- intel celeron, ...xeon pentium ...
Во вторую таблицу заносим записи
celeron id=1
xeon id=1
pentium id=1
Парсим текст, выделяем все слова, имеющиеся в таблице1.
В нашем случае- intel
Составляем массив и для каждого:
берем id ( у нас - 1)и делаем выборку по id из второй таблицы.(получаем celeron xeon pentium)
Если результат пустой, то вешаем ссылку по умолчанию(храним в первой таблице)
Если результат не пустой, то берем слово, следующее за обрабатываемым и по нему ищем в результатах предыдущего поиска. Если нашли, берем ссылку, иначе ссылка по умолчанию.
С кодом сам разбирайся, тут ничего сложного нет.
P.S.только вот тормозить будет не подетски. Ключевые слова без расширений можно отдельно сложить и для них сразу замену на ссылку. так чуток быстрее будет.
... То есть дан текст типа
"Intel Pentium представила процессор"
и его надо заменить на
"<a href=asd>Intel Pentium</a> представила процессор"
В этом нет ничего сложного, str_replace,но как проверить стоит ли на Intel Pentium ссылка или может стоит на Intel.
Всё это на PHP
Ёханый бабай, так бы блин сразу и сказал.
Создаёшь таблицу, заносишь в неё ключевые слова-одним полем, вторым полем-id связанных с ним расширений, третьим- ссылка по умолчанию.
Создаешь вторую таблицу, в ней id, расширение и ссылка.
Конкретный пример. Ключевое слово intel - заносим в первую таблицу, даем id=1 (его вообще индексом и на автоинкремент)
С интелом у нас к примеру связано
1. Сама контора-описание, история
2. По каждому поколению и ядру- intel celeron, ...xeon pentium ...
Во вторую таблицу заносим записи
celeron id=1
xeon id=1
pentium id=1
Парсим текст, выделяем все слова, имеющиеся в таблице1.
В нашем случае- intel
Составляем массив и для каждого:
берем id ( у нас - 1)и делаем выборку по id из второй таблицы.(получаем celeron xeon pentium)
Если результат пустой, то вешаем ссылку по умолчанию(храним в первой таблице)
Если результат не пустой, то берем слово, следующее за обрабатываемым и по нему ищем в результатах предыдущего поиска. Если нашли, берем ссылку, иначе ссылка по умолчанию.
С кодом сам разбирайся, тут ничего сложного нет.
P.S.только вот тормозить будет не подетски. Ключевые слова без расширений можно отдельно сложить и для них сразу замену на ссылку. так чуток быстрее будет.
Честно говоря не че не понел, мне все говорят что надо парсить, а я не знаю что это такое, мож кто растолкует, токо не посылайте на буржуйский мануал. А желательно привиди пример.
Цитата:
Originally posted by olegking
Честно говоря не че не понел, мне все говорят что надо парсить, а я не знаю что это такое...
Парсить- это разбирать текст в соответствии с какими либо правилами.
parse: выполнять грамматический разбор
Когда бродилка закачивает хэтэ-эмелину, она её парсит, чтобы отобразить, когда запускается php скрипт- он парсится чтобы исполниться. Или на предмет ошибок, и если ошибки есть то это parsing error. Можно парсить логи, в общем что угодно.
В твоем случае грамматика- это разделенные пробелами слова. Ну может другие разделители есть. Береш split( ) и разбиваешь как надо, потом убираешь хлам который заведомо ссылкой не будет- к примеру цифры, союзы, прочее. Не забудь в разделители включить точки, запятые и прочие восклицательные знаки. А уже с тем что останется продолжаешь работать
Честно говоря не че не понел, мне все говорят что надо парсить, а я не знаю что это такое...
Парсить- это разбирать текст в соответствии с какими либо правилами.
parse: выполнять грамматический разбор
Когда бродилка закачивает хэтэ-эмелину, она её парсит, чтобы отобразить, когда запускается php скрипт- он парсится чтобы исполниться. Или на предмет ошибок, и если ошибки есть то это parsing error. Можно парсить логи, в общем что угодно.
В твоем случае грамматика- это разделенные пробелами слова. Ну может другие разделители есть. Береш split( ) и разбиваешь как надо, потом убираешь хлам который заведомо ссылкой не будет- к примеру цифры, союзы, прочее. Не забудь в разделители включить точки, запятые и прочие восклицательные знаки. А уже с тем что останется продолжаешь работать
Покажи плизз пример, я не очень пойму, мне бы всё на примере, или где-нить прочитать про него побольше.
Цитата:
Originally posted by olegking
Покажи плизз пример, я не очень пойму, мне бы всё на примере, или где-нить прочитать про него побольше.
Покажи плизз пример, я не очень пойму, мне бы всё на примере, или где-нить прочитать про него побольше.
если с xml знаком, то ИМХО лучше статьи хранить в xml, а потом его разбирать с помощью пхп.. пример тут безсмысленно приводить, потому что если понимаешь о чем я то и сам сможешь... да и длинный больно пример получиться..
Цитата:
Originally posted by Lsd[52r]
... да и длинный больно пример получиться..
2olegking и он прав...
Разбей свой вопрос на вопросы поменьше. И конкретно указывай, что именно не понятно. И пробуй в конце концов. Не получится-клади код, объясним что не так. А не посылая тебя к мануалам ответить на твой вопрос можно только забив мануал сюда- задача в общем то выполнимая, но чреватая. Mike не поймет. И Joker-у потом не обьяснишь, что из лучших побуждений сделано было.
... да и длинный больно пример получиться..
2olegking и он прав...
Разбей свой вопрос на вопросы поменьше. И конкретно указывай, что именно не понятно. И пробуй в конце концов. Не получится-клади код, объясним что не так. А не посылая тебя к мануалам ответить на твой вопрос можно только забив мануал сюда- задача в общем то выполнимая, но чреватая. Mike не поймет. И Joker-у потом не обьяснишь, что из лучших побуждений сделано было.
Согласен.