Заипалсо немного, вот что намутил: PHP: $_POST['bodyUser'] = split(' ', $_POST['bodyUser']); //var_dump($_POST['bodyUser']); foreach($_POST['bodyUser'] as $oneBodyUser) { if(strpos($oneBodyUser, 'http://')) $_POST['bodyUser'] .= ' '.str_replace($oneBodyUser, '<a href = "$oneBodyUser">$oneBodyUser</a>', $oneBodyUser); $_POST['bodyUser'] .= ' '.$oneBodyUser; } var_dump($_POST['bodyUser']); ещё пробовал закидывать в массив, потом имплоадить... станд.: Чё я не так делаю?
PHP: $slovo='http://prekol111'; $slovo = explode('//', $slovo); if ($slovo[0]=='http:' or $slovo[0]=='https:'){$res="<a href ='$slovo[0]//$slovo[1]'>$slovo[1]</a>";} echo $res;
Ru}{eeZ PHP: echo preg_replace('#(https?://[^ ]*)#i','<a href="\\1">\\1</a>',$_POST['bodyUser']); Не?
Ru}{eeZ, учи регулярки. http://phpclub.ru/detail/article/regexp_1 http://phpclub.ru/detail/article/regexp_2
Ru}{eeZ А циклы страшного вида, и explode - гораздо быстрее видимо PHP: $in=array_fill(0,50,'http://yandex.ru')+array_fill(51,50,'просто текст')+array_fill(101,20,'<br>'); shuffle($in); $a=implode(' ',$in); $start=microtime(true); $a1=preg_replace('#(http://[^ ]*)#i','<a href="\\1">\\1</a>',$a); echo microtime(true)-$start; $a=implode(' ',$in); echo '<br />'; $start=microtime(true); // А тут исправленный вариант того, что хотел ты $a=split(' ', $a); $a2=''; foreach($a as $oneBodyUser) { if(strpos($oneBodyUser, 'http://')===false) {$a2 .= ' '.$oneBodyUser;} else {$a2 .= " <a href ='$oneBodyUser'>$oneBodyUser</a>";} } echo microtime(true)-$start; echo '<br><h3><font color="green">'.$a1.'</font></h3>'; echo '<br><h3><font color="red">'.$a2.'</font></h3>'; Это вам для сравнения. Все хорошо к месту - если требуется простая обработка - заменить одну букву на другую например - то строковые, а вот если эти строковые функции начнешь циклить и усложнять - то.... Разница - от 20 до 200 раз З.Ы. у тя в коде была ошибка в цикле, ты одновременно перебирал массив $_POST['bodyUser'] и одновременно в цикле обращался к ней, как если это строковая переменная З.Ы.Ы. Переделал пример для наглядности, и исправил ошибки в твоей версии - спасибо astrologer
int strpos( string $haystack , mixed $needle [, int $offset ]); Warning This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE, such as 0 or "". Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.