preg_replace да не изкарва думите < 3 символа

SoMeAny

Registered
Възможно ли е този код да се направи така че думите който са по малки от 3 символа изобщо да не се показват

$text = 'Вие сте нов потребител и ще виждате това предупреждение до 10-тия пост! ';
$text = preg_replace('/([a-zа-я0-9]{3,})(\s*)/ui', '<a href="#">$1</a>$2', $text);
echo $text;
 
Код:
$text = 'Вие сте нов потребител и ще виждате това предупреждение до 10-тия пост! ';
$text = preg_replace('/([a-zа-я0-9]{3,})(\s*)/ui', '<a href="#">$1</a>$2', $text);

if(strlen($text) < 3) { $text = ''; }

echo $text;
 
Оф извинявай обърках се. Мислех, че за цялото изричение, сега вникнах изцяло във въпроса :D


Код:
 $text = "test te tesssst tes tessst t ttt!";
if( preg_match_all( '/\\b\\w{3,}\\b/', $text, $match )) {
  foreach( $match[0] as $word ) {

    echo "$word ";
  }
}
 
на чарсет windows-1251
preg_replace('/(^|[\s,])[a-zA-Z\xE0-\xFF\xC0-\xDF0-9]{1,3}([\s,]|$)/', '$1$2', $text);
echo $text;
Но и цифри, можеш да махнеш 0-9 от израза
Ако искаш да се махат цифрите, но искаш примерно от сорта на това:
a12
12a
да се маха пиши
 
има и за utf-8 мн ясно :)
Код:
$text = preg_replace('/(^|[\s,])[a-zA-Z0-9\xD0\x90-\xD0\xAF\xD0\xB0-\xD1\x8F]{1,3}($|[\s,])/', '$1$2', $text);
echo $text;
или:
Код:
$text = preg_replace('/(^|[\s,])[a-zA-Z0-9а-яА-Я]{1,3}($|[\s,])/u', '$1$2', $text);
echo $text;
 
Ако правилно съм те рабрал ти трябва това
Код:
<?php
	  $text = "fsafss fs ff ddd fsfsfs s "; 
if( preg_match_all( '/\\b\\w{3,}\\b/', $text, $match )) { 
  foreach( $match[0] as $texta ) { 
$texta = preg_replace('/([a-zа-я0-9]{3,})(\s*)/i', '<a href="#">$1</a>$2', $texta);
    echo "$texta "; 
  } 
} 
?>
 
talevtehnology не работи

snoko
някой думи ги маха някой не примерно има махнато една дума с 2 букви друга дума пак с 2 букви си седи

другото което е в линкове се превръща празното място а не искам това искам думите да си останат линкове
 
да забелязах до са се мъчих да разбера от каде идва :D
Код:
$text = preg_replace('/(^|[\s,]{0,1})[a-zA-Z0-9а-яА-Я]{1,3}($|[\s,])/u', '$1$2', $text);
ЕДИТ:
или
Код:
$text = preg_replace('/(^|[\s,]{0,1})[a-zA-Z0-9а-яА-Я\xD0\x90-\xD0\xAF\xD0\xB0-\xD1\x8F]{1,3}($|[\s,])/u', '$1$2', $text);
По готино е по втория вариант защото може да ти иска да слагаш на самия файл кодировка utf.[/i]
 
Пробвал съм го и рабти но само на латиница :)

Ти нали искаш примерно fsafss fs ff ddd fsfsfs да ти изкара fsafss ddd fsfsfs
 
Код:
<?php 
$text = 'Вие сте нов потребител и ще виждате това предупреждение до 10-тия пост! '; 

$newtext = ""; 
$explode = explode(" ","$text"); 
foreach($explode as $word){ 
if(strlen($word) >= 3) $newtext = "$newtext $word"; 
} 
$newtext = preg_replace('/(^|[\s,])[a-zA-Z\xE0-\xFF\xC0-\xDF0-9]([\s,]|$)/', '$1$2', $newtext);
echo $newtext;
?>
 
fixed
Код:
$text = preg_replace('/(?<=[^a-zA-Z0-9а-яА-Я]|^)[a-zA-Z0-9а-яА-Я]{1,3}(?=[^a-zA-Z0-9а-яА-Я]|$)/u', '', $text);
 
cnoko не изкарва думите като линкове
сложих <a href="#">$1</a>$2 без резултат

и има ли начин да изкарва само цифрите и буквите
не искам да има други знаци като ( { [ / +' ; .... и т.н

вместо пост! > да си изведе само пост без удивителния
 

Back
Горе