Jump to content

помогите с регуляркой


Go to solution Solved by yr4ik,

Recommended Posts

yr4ik, Ваш код не хочет работать, та же проблема что в самом начале.

Спасибо всем за помощь, код mishanya прекрасно справляется с задачей.

 

А проблему нельзя конкретно описать??

Скорее всего вы просто не правильно его в код вставили....

Link to post
Share on other sites

Вставил так:

public function hashtag_modifier($str)
	{
$new_str = $str;
if(preg_match_all('#(style|href)=([\'"])([^\'"]+?)\\1#iu', $str, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {//Затираем style
	foreach($matches as $m){
		$_length = strlen($m[0][0]);
		$new_str = substr_replace($new_str, str_repeat('*', $_length), $m[0][1], $_length);
	}
}

if(preg_match_all('/#(\w+)/iu', $new_str, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {//Поиск наших тегов
	$_offset = 0;
	foreach($matches as $m){
		$_length = strlen($m[0][0]);
		$replace = '<a href="tags?keyword='.$m[1][0].'">#'.$m[1][0].'</a>';
		$str = substr_replace($str, $replace, $m[0][1] - $_offset, $_length);
		$_offset += $_length - strlen($replace);
	}
}

return $str;
}
Link to post
Share on other sites

Ну опять же - проблему не описали!

А по предыдущим постам не поймешь что за ошибка...

 

Интуитивно могу предположить что речь идет о игнорировании тегов типа ##tag

 

 

Если да то вторая регулярка так: 

if(preg_match_all('/(?<!#)#(\w+)/iu', $new_str, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {//Поиск наших тегов
Link to post
Share on other sites

Когда я вставляю ваш первый код, то возникает та же проблема что я описывал в посте: http://forum.simplacms.ru/topic/10886-%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B8%D1%82%D0%B5-%D1%81-%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BA%D0%BE%D0%B9/?do=findComment&comment=83644

Link to post
Share on other sites
  • Solution

Все понял. Исправил код в #24 посте (нужна обратная ссылка на \\2 а не на \\1):

if(preg_match_all('#(style|href)=([\'"])([^\'"]+?)\\2#iu', $str, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {//Затираем style

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

Если хотите то правьте эту регулярку на поиск html тегов (в инете есть готовые), а не атрибутов href  и style.

Edited by yr4ik
Link to post
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.

Guest
Reply to this topic...

×   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.

Loading...
×
×
  • Create New...