Jump to content
  • 0

Регулярные выражения


vitaxastifler
 Share

Question

Ребята,помогите написать код

<?php$exp = "/([a-z0-9]+\.[a-z]+\.[a-z]+)/";$ewe = "klkk.ed.mm";if (preg_match($exp,$ewe)){preg_replace($exp,$ewe);}?>

Задача следующая,если в моём посте (на wordpress) находим к примеру google.com то делаем его "кликовой" ссылкой 

типа <a hreff="">

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

Edited by vitaxastifler
Link to comment
Share on other sites

18 answers to this question

Recommended Posts

  • 0

Ваша регулярка не сматчит google.com Но зато сматчит qwerty.asdfgh.zxcvbn что никак не может быть доменным именем. Ну то есть может, конечно, но это явно ен ваш случай. А вообще в гугле были? https://www.google.com/search?q=regexp+replace+text+with+link

Link to comment
Share on other sites

  • 0

ситуация в том, что многие создатели составители регулярок что то да не учитывали...  чтобы самому их составлять - разбираться нужно))

upd: выудить бы из буллетина   IP.Board её :)

вот что в инете нашел. не тестил 

http://jsfiddle.net/Deonis/suVrB/

Edited by Николя223
  • Like 1
Link to comment
Share on other sites

  • 0

rus спасибо конешно,но что то я там не нашёл ответ на свой вопрос(

А завтра утром мне надо отчёт сделать шефу(

 

что-то вы плохо ищите, там же на том форуме ссылка: http://htmlweb.ru/php/example/preg.php - Найти и заменить все "http://" на ссылки

ну еще вот тут посмотри

  • Like 1
Link to comment
Share on other sites

  • 0

Николя223 спасибо,с виду не плохо но к сожелению он написал на ява скрипте,а мне нужен на пхп так как это плагин.

Ну так по заданию...

 

rus У меня не работает "Найти и заменить все "http://" на ссылки"

Мб я что то не так делаю...

<?php/*Plugin Name: urlPlugin URI: http://vk.com	Description: This is my first plugins for wordpress)Version: 1.0Author: VetalAuthor URI: http://vk.com/id1*//*  Copyright 2014  Vetal (email : jenyay.ilin {at} gmail.com)    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program; if not, write to the Free Software    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA*/?><?php$text = preg_replace('#(?<!\])\bhttp://[^\s\[<]+#i',	"<a href=\"$0\" target=_blank><u>Посмотреть на сайте</u></a>",	nl2br(stripslashes($text)));?>

Но вообще никакой код ничего не меняем в постах(

Помогите разобраться !

Edited by vitaxastifler
Link to comment
Share on other sites

  • 0

вот, ловите готовый рабочий вариант:

$text = 'Lorem ipsum dolor sit amet, http://site.ru consectetur adipisicing elit, sed do eiusmod https://google.com tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud site.ru exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit ftp://site.ru in voluptate velit esse cillum dolore eu site.ru/page/somthing.html fugiat nulla pariatur. Excepteur sint occaecat http://www.askdev.ru/q/20283 cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum www.google.com';$text=preg_replace('/((([A-Za-z]+):\/\/)?(([a-zA-Zа-яА-ЯёЁ0-9\-.]+\.[a-zA-Zа-яА-ЯёЁ0-9\-]+)([\/]([a-zA-Z0-9_\/\-.?&%=+])*)*))/','<a href="$1" class="link" target="_blank">$4</a>',$text);echo $text;

только я так и не понял там, как простое site.ru в http:// превращать?

ну это уже не моя забота... :)

  • Like 1
Link to comment
Share on other sites

  • 0

что бы site.ru превращать в http://site.ru нужна не очень хорошая регулярка, которая будет вылавливать вхождения на вроде [A-Za-zА-Яа-я0-9].[A-Za-zА-Яа-я] с не большими доработками из предыдущего поста, но проблема в том, что под эту регулярку прокатят такие фразы как: "Всем привет.Как дела?" привет.Как может определиться как сайт. Можно конечно проверять на php существование данного сайта путем запроса, и если будет 404 то в ссылку не превращаем, но такой способ увеличит время выполнения скрипта.

Edited by Switch74
  • Like 1
Link to comment
Share on other sites

  • 0

все верно, я просто не подумал еще о том, что в тексте в принципе такого быть не должно, разве что этот текст не выкладывал бот, но тогда теряется смысл оборачивания ссылок в тексте в тег <a>.

к стати, Veseloff, а зачем в тексте должно быть: qwerty.asdfgh.zxcvbn?

  • Like 1
Link to comment
Share on other sites

  • 0

если делать эту функцию при добавлении текста, и в базу записывать уже проверенный и исправленный вариант, то будет норм, но вот при выводе текста каждый раз проверять все ссылки - это будет накладно

  • Like 1
Link to comment
Share on other sites

  • 0

rus спасибо,работает)

Пеперь главный вопрос,по заданию мне надо сделать всё это как скрипт по wordpress но почему то он не отрабатывается 

Мб я не правильно код написал(

<?php/*Plugin Name: urlPlugin URI: http://vk.com	Description: This is my first plugins for wordpress)Version: 1.0Author: VetalAuthor URI: http://vk.com/id1*//*  Copyright 2014  Vetal (email : jenyay.ilin {at} gmail.com)    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program; if not, write to the Free Software    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA*/?><?php$text=preg_replace('/((([A-Za-z]+):\/\/)?(([a-zA-Zа-яА-ЯёЁ0-9\-.]+\.[a-zA-Zа-яА-ЯёЁ0-9\-]+)([\/]([a-zA-Z0-9_\/\-.?&%=+])*)*))/','<a href="$1" class="link" target="_blank">$4</a>',$text);?>
Edited by vitaxastifler
Link to comment
Share on other sites

  • 0

А ну парни,обьясните такую вещь.

Вот я хочу подкл ява скрипт к своему плагину

Вот пример

http://jsfiddle.net/Deonis/suVrB/

 

Значит я создал папку "Dron"(название плагина)

В ней есть файл "dota.php"в нём 

такой код:

<?php/*Plugin Name: urlPlugin URI: http://vk.com	Description: This is my first plugins for wordpress)Version: 1.0Author: VetalAuthor URI: http://vk.com/id1*//*  Copyright 2014  Vetal (email : jenyay.ilin {at} gmail.com)    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program; if not, write to the Free Software    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA*/?><?phpadd_action('wp_enqueue_scripts', 'CurrentPluginName_enqueue_js'); function CurrentPluginName_enqueue_js() {  wp_enqueue_script('resize', plugins_url('js/pudge.js', __FILE__), array('jquery'));}?>

в папке "dron" есть папка "js"в ней есть файл "pudge.js"

вот его содержание

function linkify(inputText) {    var pattern = /([-a-zA-Z0-9@:%_\+.~#?&\/\/=]{2,256}\.[a-z]{2,4}\b(\/?[-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)?)/gi;    var replacedText = inputText.replace(pattern, '<a href="$1" target="_blank">$1</a>');    return replacedText;}var div = $('#content'),    txt = div.text(),    newTxt;newTxt = linkify(txt);div.html(newTxt);

Вопрос следующий,почему не работает?

Мб потому что нету 

Зацепки (Hook) плагина?

Или я не правильно подключил в dota.php скрипт?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy