Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поиск ссылки в строке
 
 автор: mabelrod   (09.12.2011 в 13:07)   письмо автору
 
 

Друзья, скажите, как нати в строке все ссылки и заменить их на звездочки. Заменить я знаю, можно через preg_replace, а вот как их найти ... я непонимаю.

Например незнаю как сделать есть ссылка начинается на www а другая на http так вот как зафигачить все это слово целиком ?

  Ответить  
 
 автор: Slo_Nik   (09.12.2011 в 13:14)   письмо автору
 
   для: mabelrod   (09.12.2011 в 13:07)
 

1) Ошиблись веткой форума...
2)

<?php 
preg_math
("|(www|http) ну_и_далее|is"$link);
?>

  Ответить  
 
 автор: mabelrod   (09.12.2011 в 13:21)   письмо автору
 
   для: Slo_Nik   (09.12.2011 в 13:14)
 

а как точно написать ? без ну и далее ?

  Ответить  
 
 автор: Slo_Nik   (09.12.2011 в 13:25)   письмо автору
 
   для: mabelrod   (09.12.2011 в 13:21)
 

приблизительно так

<?php  
preg_math
("|(www|http)://[a-z0-9]\.[a-z]{2,6}|is"$link); 
?> 

  Ответить  
 
 автор: mabelrod   (09.12.2011 в 13:28)   письмо автору
 
   для: Slo_Nik   (09.12.2011 в 13:25)
 

Скажите что не так?? я написал:


    $str = "ходи мой сайт http://ya.ru он самый хороший";

    preg_math("|(www|http)://[a-z0-9]\.[a-z]{2.6}|is", $str);


Пишет ошибку:

Fatal error: Call to undefined function preg_math() in /home/w/wm6996/shk/public_html/zas.php on line 9


поточнее вот: http://puu.sh/af0d

  Ответить  
 
 автор: Slo_Nik   (09.12.2011 в 13:31)   письмо автору
 
   для: mabelrod   (09.12.2011 в 13:28)
 

ну Вы хотя бы переводчиком воспользовались, да заглянули в руководство по php, а не слепо копировали )))
я ошибся, не правильно написал имя функции )))
извините....
исправляйте...

  Ответить  
 
 автор: mabelrod   (09.12.2011 в 13:36)   письмо автору
 
   для: Slo_Nik   (09.12.2011 в 13:31)
 

непрокатило - я потом вывел строку а она без изменений !! кстати насчет ошибки - у меня нотпад - он ее не подсвечивает ))

  Ответить  
 
 автор: Slo_Nik   (09.12.2011 в 15:07)   письмо автору
 
   для: mabelrod   (09.12.2011 в 13:36)
 

а зачем Вам подсвечивать в notepad++ ссылки ?
Вам недостаточно того, что говорит сам php?

  Ответить  
 
 автор: Sturmvogel   (09.12.2011 в 13:47)   письмо автору
 
   для: mabelrod   (09.12.2011 в 13:28)
 

preg_match()


$str = "ходи мой сайт http://ya.ru он самый хороший"; 
preg_match("/http:\/\/[a-z0-9]\.[a-z]{2,6}/is", $str);

  Ответить  
 
 автор: mabelrod   (09.12.2011 в 13:51)   письмо автору
 
   для: Sturmvogel   (09.12.2011 в 13:47)
 

да я уже поменял !! я говорю на выходе все равно строка со ссылкой стоит, а должна быть БЕЗ, то бишь код не работает, как поправить ?

  Ответить  
 
 автор: Slo_Nik   (09.12.2011 в 14:21)   письмо автору
 
   для: mabelrod   (09.12.2011 в 13:51)
 

при помощи функции preg_match() осуществляется поиск в строке, но ни как не замена
читайте руководство
а вот preg_replace() как раз осуществляет замену по РВ

сначала найдите соответствие и если присутствует в строке ссылка - меняйте её

  Ответить  
 
 автор: mabelrod   (09.12.2011 в 15:11)   письмо автору
 
   для: Slo_Nik   (09.12.2011 в 14:21)
 

неполучается, можете помочь ? пожалуйста.

  Ответить  
 
 автор: Slo_Nik   (09.12.2011 в 15:12)   письмо автору
 
   для: mabelrod   (09.12.2011 в 15:11)
 

показывайте, что Вы написали

  Ответить  
 
 автор: mabelrod   (09.12.2011 в 15:21)   письмо автору
 
   для: Slo_Nik   (09.12.2011 в 15:12)
 

    // задача вместо ссылки сделать звездочки
    $str = "ходи мой сайт http://ya.ru он самый хороший";  
    preg_match("/http:\/\/[a-z0-9]\.[a-z]{2,6}/is", $str);
    // preg_replace


дальше не осилил, у меня слабые знания в регулярных выражениях, точнее их нет, вот учусь на этом примере.

  Ответить  
 
 автор: Slo_Nik   (09.12.2011 в 15:34)   письмо автору
 
   для: mabelrod   (09.12.2011 в 15:21)
 

есть так называемые квантификаторы, "+", "*", "?", {n}, {n,} и {n, m}
вот Вы их не использовали, поэтому у Вас не работает
квадратные скобки обозначают только один символ, а у Вас в ссылке их несколько
почитайте здесь

  Ответить  
 
 автор: mabelrod   (09.12.2011 в 15:53)   письмо автору
 
   для: Slo_Nik   (09.12.2011 в 15:34)
 

ну помогите пожалуйста !!

  Ответить  
 
 автор: Slo_Nik   (09.12.2011 в 16:36)   письмо автору
 
   для: mabelrod   (09.12.2011 в 15:53)
 

Вы прочитали, пробовали написать код?
Если да, то показывайте...

  Ответить  
 
 автор: mabelrod   (09.12.2011 в 16:49)   письмо автору
 
   для: Slo_Nik   (09.12.2011 в 16:36)
 

вы надо мной издеваетесь ... ну и ладно.

  Ответить  
 
 автор: Slo_Nik   (09.12.2011 в 16:54)   письмо автору
 
   для: mabelrod   (09.12.2011 в 16:49)
 

[поправлено модератором]

  Ответить  
 
 автор: mabelrod   (09.12.2011 в 16:55)   письмо автору
 
   для: Slo_Nik   (09.12.2011 в 16:54)
 

сгодиться и неготовое, главное посмотреть как это делается 1) найти 2) заменить
тут главное понять ...

  Ответить  
 
 автор: Slo_Nik   (09.12.2011 в 16:59)   письмо автору
 
   для: mabelrod   (09.12.2011 в 16:55)
 

Вам дали уже готовое решение, осталось только добавить квантификатор и заменить функцию...
Всё! более ни чего не надо делать.
Включите мозги и подумайте хоть немного

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования